谁能提供这方面的例程代码?

解决方案 »

  1.   

    unit mainform;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ComCtrls, StdCtrls, FileCtrl, ExtCtrls,helpform;type
      TForm1 = class(TForm)
        TreeView1: TTreeView;
        procedure FormCreate(Sender: TObject);
        procedure TreeView1DblClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
        Pobj = ^Tobj;
        Tobj = record
        namenode: string;
        snode: ttreenode;
       end;
    var
      Form1: TForm1;
        list:tlist;implementation{$R *.DFM}function getnode(mylist:tlist;prm:string):ttreenode;
    var
      i: Integer;
    begin
      result:=nil;
      for i := 0 to myList.Count - 1 do
      begin
        if prm = Pobj(myList[i])^.namenode then
        begin
          result:=Pobj(myList[i])^.snode;
          break;
        end;
      end;
    end;
    procedure setnode(mylist:tlist;prm:string;snode:ttreenode);
    var
      i: Integer;
      pp:pobj;begin  for i := 0 to myList.Count - 1 do
      begin
        if prm = Pobj(myList[i])^.namenode then
           break
      end;
      new(pp);
      pp^.namenode:=prm;
      pp^.snode:=snode;
      mylist.add(pp);end;
    function getcod(prm:string):string;  //取节点标题时,以';'为标记!!
    var fnd:integer;
    begin
         fnd:=pos(';',prm);
              if fnd>0 then            //取';'标记以前的字符串;
                 result:=copy(prm,1,fnd-1)
              else
                 result:=prmend;
    function getname(prm:string):string;
    var fnd:integer;
    begin
         fnd:=pos(';',prm);
              if fnd>0 then
                 result:=copy(prm,fnd+1,length(prm)-fnd)
              else
                 result:=prmend;procedure TForm1.FormCreate(Sender: TObject);
    var node:ttreenode;
        i:integer;
        menulist:tstringlist;
        old,new:string;
    begin
        form1.Show;
        list:=tlist.create;
        menulist:=tstringlist.create;
        menulist.LoadFromFile('menu.txt');
        old:='';
        setnode(list,old,nil);
        for i:=0 to menulist.count -1 do
        begin
        if menulist.strings[i]='' then
           Continue;
           new:=getcod(trim(menulist.strings[i]));
           if copy(new,1,length(new)-1)=copy(new,1,length(old)-1) then
                node:=treeview1.Items.add(getnode(list,old),getname(trim(menulist.strings[i])))
           else
                node:=treeview1.Items.addchild(getnode(list,copy(new,1,length(new)-1)),getname(trim(menulist.strings[i])));       old:=getcod(trim(menulist.strings[i]));
           setnode(list,old,node);
        end;
        treeview1.refresh;
        if List <> nil then
           begin
             for i := 0 to List.Count - 1 do
             begin
                Pobj(List[i])^.snode := nil;
                Dispose(Pobj(List[i]));
             end;
           end;    list.free;
    end;
    procedure TForm1.TreeView1DblClick(Sender: TObject);
    begin
       if not TreeView1.Selected.HasChildren then
          begin
            form2.show;
            form2.richedit1.lines.loadfromfile('help.txt');
          end;
    end;end.