谁能提供这方面的例程代码?
解决方案 »
- TTabSheet 动态删除 效果不理想??
- 100分求助-如何发送一个消息给浏览器的地址栏?
- 文件里如何读取实数啊?
- 一个很急的问题,请高手指点!急!!!!!!!!
- [100+100]重金收购读取%SystemRoot%\system32\config\SysEvent.Evt文件的API函数,及其用法(最好有代码)!
- 怎样让stringgrid控件的滚动条自动滚动?
- 急:如何根据类名和类方法的字符串动态创建对象和调用对象方法?在线等待,高分求助,UP有分!
- 关于安装程序的制作的问题!
- 高分求助,csdn 是怎么搞的,这样的问题没人会吗?
- 关于程序自我更新的问题!
- <www.playicq.com>转载一篇,大家继续讨论
- ★★看到有些软件的弹出式菜单很漂亮,不知道是怎么弄的?
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.