Q&A

  • treeview에다가 데이터 저장하기
안녕하세요..



또..다시..질문을..올립니다..



treeview의 좋은 예제가 있으면..받아 보았으면합니다..



제가 할려고 하는것은 treeview에다가 richedit의 데이타를 저장하고.싶습니다.



좋은 예제가 있으면..가르쳐 주세요..



메일로 보내주시면 더욱 감사하겠습니다..



그럼..고수님들..부탁드립니다.

1  COMMENTS
  • Profile
    각시탈 2000.05.20 18:43
    저도 인터넷에서 돌아다니다 우연찮게

    찾아 모아둔것입니다.

    이것이 맞는 소스인지는 모르겠네요..

    아무튼 TreeView에대한 것이기에

    도움이 되셨으면 합니다.



    unit TViewExam;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls, ComCtrls, ImgList;



    type



    TForm1 = class(TForm)

    TreeView1: TTreeView;

    Button1: TButton;

    Button2: TButton;

    ImageList1: TImageList;

    OpenDialog1: TOpenDialog;

    Label1: TLabel;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure TreeView1Change(Sender: TObject; Node: TTreeNode);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    TNodeData = class

    Text: string;

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}



    function IsDuplicate(ANode: TTreeNode; NewName: string; Inclusive: Boolean): Boolean;

    var

    TempNode: TTreeNode;

    begin

    if ANode = nil then

    begin

    Result := False;

    Exit;

    end;

    if Inclusive then

    if CompareText(ANode.Text, NewName) = 0 then

    begin

    Result := True;

    Exit;

    end;

    TempNode := ANode;

    repeat

    TempNode := TempNode.GetPrevSibling;

    if TempNode <> nil then

    if CompareText(TempNode.Text, NewName) = 0 then

    begin

    Result := True;

    Exit;

    end;

    until TempNode = nil;

    TempNode := ANode;

    repeat

    TempNode := TempNode.GetNextSibling;

    if TempNode <> nil then

    if CompareText(TempNode.Text, NewName) = 0 then

    begin

    Result := True;

    Exit;

    end;

    until TempNode = nil;

    Result := False;

    end;



    procedure TForm1.Button1Click(Sender: TObject);

    var

    Text: string;

    begin

    if TreeView1.Selected = nil then

    begin

    if TreeView1.Items.Count = 0 then

    begin

    with TreeView1.Items.AddFirst(nil, 'Root') do

    begin

    Selected := True;

    Data := TNodeData.Create;

    TNodeData(Data).Text := '루트 디렉토리입니다 !';

    ImageIndex := 0;

    SelectedIndex := 1;

    end;

    end

    else

    begin

    ShowMessage('부모 노드를 선택하세요 !');

    Exit;

    end;

    end

    else

    begin

    InputQuery('새 노드', '이름 ?', Text);

    OpenDialog1.Execute;

    if IsDuplicate(TreeView1.Selected.GetFirstChild, Text, True) then

    begin

    ShowMessage('같은 이름의 노드가 이미 존재합니다 !');

    Exit;

    end;

    with TreeView1.Items.AddChild(TreeView1.Selected, Text) do

    begin

    Data := TNodeData.Create;

    TNodeData(Data).Text := OpenDialog1.FileName;

    ImageIndex := 0;

    SelectedIndex := 1;

    end;

    end;

    end;



    procedure TForm1.Button2Click(Sender: TObject);

    begin

    if TreeView1.Selected = nil then

    begin

    ShowMessage('선택된 것이 없습니다.');

    Exit;

    end;

    if TreeView1.Selected.Level = 0 then

    begin

    ShowMessage('루트는 제거할 수 없습니다');

    Exit;

    end;

    if TreeView1.Selected.Data <> nil then

    TNodeData(TreeView1.Selected.Data).Free;

    TreeView1.Selected.Delete;

    end;



    procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);

    begin

    if TreeView1.Selected <> nil then

    begin

    if TreeView1.Selected.Data <> nil then

    Label1.Caption := TNodeData(TreeView1.Selected.Data).Text;

    end;

    end;



    end.



    즐팅하세요..