点击TreeView1列表打开对应的窗体,谢谢!
主窗体name名:form1TreeView1例表模块 .....功能模块1.....功能模块2有一个数据库表select * from tb1数据ID functions froms1 功能模块1 TForm32 功能模块1 TForm4TreeView1Click事件怎么写?点击TreeView1列表,打开对应的窗体,求代码,谢谢!
procedure TForm1.TreeView1Click(Sender: TObject);var Form : TForm;begin if TreeView1.Selected = nil then Exit; if TreeView1.Selected.Text = '功能模块1' then Form := TForm2.Create(nil); if TreeView1.Selected.Text = '功能模块2' then Form := TForm2.Create(nil); if TreeView1.Selected.Text = '功能模块3' then Form := TForm2.Create(nil); . . . Form.Show;end;
[解决办法]
uses unit2,unit3;{结构体自己根据需要扩展}type PRecx=^TRecx; TRecx=record functions,forms:string;end;{添加树,自己改成从数据库取值,然後后循环添加}procedure TForm1.FormCreate(Sender: TObject);var P:PRecx;begin new(P); P^.functions:='Form2'; P^.forms:='TForm2'; TreeView1.Items.AddObject(nil,P^.functions,P); new(P); P^.functions:='Form3'; P^.forms:='TForm3'; TreeView1.Items.AddObject(nil,P^.functions,P); {...其它}end;procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);var P:PRecx; fNode:TTreeNode; fClass:TFormClass; frm:Tform;begin fNode:=TreeView1.GetNodeAt(X,Y); if fNode<>nil then begin P:=PRecx(fNode.Data); fClass:=TFormClass(GetClass(P^.forms)); if fClass<>nil Then begin frm:=fClass.Create(self); frm.Show; end else showmessage('窗体'+P^.forms+'未找到!'); end;end;initialization RegisterClass(Tform2); RegisterClass(Tform3); {...其它}finalization UnRegisterClass(Tform2); UnRegisterClass(Tform3); {...其它}
[解决办法]
d7就有 类的类
帮助里搜Tclass