点击TreeView1列表打开对应的窗体,谢谢!
- Delphi(Pascal) code
主窗体name名:form1TreeView1例表模块 .....功能模块1.....功能模块2有一个数据库表select * from tb1数据ID functions froms1 功能模块1 TForm32 功能模块1 TForm4TreeView1Click事件怎么写?点击TreeView1列表,打开对应的窗体,求代码,谢谢!
[解决办法]
- Delphi(Pascal) code
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;
[解决办法]
[解决办法]
var AClass: TPersistentClass;
tempForm:TForm;
//-----------------------------------------------
if adoquery.Locate('functions',trim(TreeView1.Selected.Text),[]) then
begin
AClass := GetClass(adoquery.FieldByName('froms').AsString);
if AClass = nil then
begin
showmessage('此模块尚未完成!');
Exit;
end;
//这里写你实例化的代码
//具体怎么写我忘了,手头没DELPHI,这写都是我在浏览器直接输入的
end;
end;
//-------------------------------------------------Form1下面写上
initialization
RegisterClass(TForm1);
finalization
UnRegisterClass(TForm1);
end.
[解决办法]
应该有5种方法可以实现楼主的需求。最完美的应该是结合treeview的DATA属性来做,可以挂个结构做更复杂的事情。
最简单的应该是用
TForm(self.FindComponent('Form'+inttostr(treeview1.Selected.AbsoluteIndex))).Show;
一行代码搞定。前提是你的窗体命名规则是form1、from2、form3这样的顺序。执行上句命令前判断结点是否有选中。
[解决办法]
你这是根据字符串找对应的窗体类,要用到注册窗体方法,再用GetClass或FindClass方法取得
大概意思就是3楼case5166(我看见佛) 说的
我写个简单的例子仅供参考,窗体多的话也是要全列出来注册
- Delphi(Pascal) code
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