双击TTreeView控件中的一个TTreeNode项,如何打开对应的窗口?(100分)

T

thewzy

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用TTreeView来组织程序的功能,比如说在TTreeView控件中有一项"供应商台帐",正好
与之对应的窗口名称为:frmSupplies,现在我想通过双击"供应商台帐"项打开frmSupplies窗口。
希望那位朋友给出一段代码,不胜感激。
 
在Expand事件中判断Node是否为“供应商台帐”,如是则打开frmSupplies窗口。
 
如果想省力,比如说你的form类名叫TForm1/TForm2....
你可以这样根据选择的TreeNode序号(Index)来对应
相应的form,比如说你的供应商节点Index为3,
那么你的frmSupplies类名改做TForm3好了。呵呵。
不然你可以做一个对照表通过Selected.AbsoluteIndex来判断打开哪个窗体。

var
Form1: TForm1;

implementation

uses Unit2, Unit3;

{$R *.DFM}
procedure TForm1.TreeView1DblClick(Sender: TObject);
var
frm: TForm;
frmcls: TFormClass;
begin
frmcls := TFormClass(FindClass('TForm' + IntToStr(TreeView1.Selected.AbsoluteIndex)));
frm := frmcls.Create(Application);
frm.Show;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterClass(TForm2);
RegisterClass(TForm3);
end;
 
procedure TForm1.TreeView1DblClick(Sender: TObject);
begin
if treeview1.Selected.Text='bbb' then
showmessage('bbbbb');
end;
 
TreeView1.Items.Data:=Pointer(theForm);//theForm是节点对应的Form
要取窗体:
TForm(TreeView1.Selected.Data)
 
谢谢各位朋友,尤其感谢twos,我需要的正好是你的答案。也谢谢其他朋友们的热情和参与。
 
//在它的onChange事件中判断一下就行
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
if Node.text = '广东省' then
form2.ShowModal;//就可以了
end;
 
多人接受答案了。
 
顶部