我的主程序可以动态调用若干个Tframe窗口,这我想是DELPHI的特色。
现在问题是:当我动态调用后,却不能外部访问TFRAME里面的东西,所有的事件全部要在TFRAME本身完成,这样就很头疼。例如我的TFRAME里有个TREEVIEW,我想弹出个窗口动态增加TREVIEW节点,但是连TREEVIEW都访问不了。原因我知道,因为我的TFRAME是动态产生的,如果是静态的话应该没有问题。以上现象各位有没有遇到过?如果有解决方法,更高的分送上
现在问题是:当我动态调用后,却不能外部访问TFRAME里面的东西,所有的事件全部要在TFRAME本身完成,这样就很头疼。例如我的TFRAME里有个TREEVIEW,我想弹出个窗口动态增加TREVIEW节点,但是连TREEVIEW都访问不了。原因我知道,因为我的TFRAME是动态产生的,如果是静态的话应该没有问题。以上现象各位有没有遇到过?如果有解决方法,更高的分送上
public
frame1:tframe;
frame1:=p_type.TFrame_PType.Create(self);现在我新弹出个窗口,要访问frame1.treeview,该如何?
声明在函数区,你这样没有释放是有内存泄漏的
要这样Tform1 = class...public
Frame1:TFrame;procedure GenerateFrame;
begin
Frame1 := Tframe.Create...
end;这样你才能通过Form1.Frame1来访问
end;
FreeAndnil(Frame1)
XXX只有delphi才能办到
这样话以后别出去乱说,否则让其他语言的兄弟笑话:)其次,没看懂你说的问题到底啥意思?反正我是没遇见过
还是把你的代码贴出来吧,问题还是应该在自已身上想想就行了,既然是常见的,又怎么会是高难度呢,呵呵
*************************
错误:
public
frame1:tframe;
frame1:=p_type.TFrame_PType.Create(self);
调用:
MainForm.frame1.(这样是没有对象的)
*************************************
*************************
正确:
public
frame1:p_type.TFrame_PType;
frame1:=p_type.TFrame_PType.Create(self);
调用:
MainForm.frame1.treeview1.selected.text:='aaaa';*************************************
可是我又想只定义一个frame1对象,便于所有的不同FRAME用一个对象来生成和释放;如果不同的FRAME指定不同的申明对象,那样的话释放好麻烦啊!
我想能否通过指针来访问这个FRAME1对象就好了。
1、主窗口调用若干frame窗口通用程序:
public
frame1:tframe;
procedure FreeAndNilFrame(var frameFlag:Tframe;flag:integer);{ Public declarations }
end;procedure TFrm_Main.FreeAndNilFrame(var frameFlag:Tframe;flag:integer);
beginif assigned(frameFlag) then
freeandnil(frameflag) ; if flag=1 then //打开类别
frameFlag:= p_type.TFrame_PType.Create(self)
else if flag=2 then //打开产品管理
frameFlag:= p_name.TF_pname.Create(self) ; frameFlag.Parent:=self;
frameFlag.Top :=Frm_Main.Panel1.Top ;end;那么以上主窗口的frame1中的的控件对象,如treeview,litview..该如何在另外一个窗口中访问?
我想能否通过指针来访问这个FRAME1对象就好了。
啥意思啊?你把对象跟类混淆了吧?
frame1在这里只是一个TFrame_PType的对象罢了
其他的FRAME可以也是TFrame_PType的对象
他们和frame1是平级的你是这个意思吧?
SYNEDIT的例子中有一个和这个类似,体系搭得比较不错。有空可以去看看
你这样定义的只是一个Tframe的对象阿
创建完了后上面什么都没有如果treeview,litview在Tframe1
你的对象应该这么定义frame1:tframe1;阿
Frame其实就是一种基类窗体的实现方法
好好看看生成的代码吧
他们之间的关系就清楚了