首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

点击TreeView1列表打开对应的窗体,多谢

2012-04-12 
点击TreeView1列表打开对应的窗体,谢谢!Delphi(Pascal) code主窗体name名:form1TreeView1例表模块.....功

点击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;
[解决办法]
探讨
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 := TFo……

[解决办法]
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

热点排行