FormClientEdit := TFormClientEdit.Create(Application);
FormClientEdit.Parent := Panel1;
FormClientEdit.Show;
这么做一切正常。而自定义了函数
procedure iFormCreate(Form: TForm; FormClass: TFormClass; ParentControl: TWinControl);
Begin
Form := FormClass.Create(Application);
Form.Parent := ParentControl;
Form.Show;
end;
然后调用
iFormCreate(FormClientEdit, TFormClientEdit, Panel1);
窗体创建成功,窗体内部的操作都正常。奇怪的问题表现在通过外部来访问窗体,则总不成功。
FormClientEdit.Caption := 'aa';//通过,但其实不起作用
ShowMessage(FormClientEdit.Caption);//为空
FormClientEdit.BitBtnSave.Caption := 'aa';//读内存错误
迹象就跟 FormClientEdit 没有实例化一样。多次尝试修改自定义的函数,改来改去都没有成功,不知道是否 Delphi 存在什么奥妙规则我没认识的。麻烦各位指点迷津。
FormClientEdit.Parent := Panel1;
FormClientEdit.Show;
这么做一切正常。而自定义了函数
procedure iFormCreate(Form: TForm; FormClass: TFormClass; ParentControl: TWinControl);
Begin
Form := FormClass.Create(Application);
Form.Parent := ParentControl;
Form.Show;
end;
然后调用
iFormCreate(FormClientEdit, TFormClientEdit, Panel1);
窗体创建成功,窗体内部的操作都正常。奇怪的问题表现在通过外部来访问窗体,则总不成功。
FormClientEdit.Caption := 'aa';//通过,但其实不起作用
ShowMessage(FormClientEdit.Caption);//为空
FormClientEdit.BitBtnSave.Caption := 'aa';//读内存错误
迹象就跟 FormClientEdit 没有实例化一样。多次尝试修改自定义的函数,改来改去都没有成功,不知道是否 Delphi 存在什么奥妙规则我没认识的。麻烦各位指点迷津。
解决方案 »
- 自定义界面
- delphi中在类的private中加过程出错?
- 求救斑竹IndyFTP在changedir时出现死锁,顶贴有分!!
- 关于dll的问题[超难,别被吓到了]
- 哪位大哥大姐能帮小妹一个忙?先谢谢了!
- 怎么实现在DBGrid中双击某一行而获得该行中某一列的值?
- 如何同时播放两个WAV(游戏中使用) (100分+以后的200分)
- 没人可以帮我一下吗?
- 300分!!急急急!!各位大虾有提供关于报表的控件带源码的
- 我要修改数据库的(SIZE)谁能帮我????我是新手,大吓帮忙~~~`
- MIMEFilter怎么得到IE地址栏的URL? 不要是框架的URL?
- 请SonicX(SonicX)进来解决读excel文件中图片问题
Begin
Form := FormClass.Create(Application);
Form.Parent := ParentControl;
Form.Show;
end;楼主,敢问一下:FormClass: TFormClass,传入一个TFormClass的实例后,还能用TFormClass的实例FormClass创建实例吗?如果你一定要这样用,要用到类之类
可以改成这样:注意第一个参数var Form;
procedure iFormCreate(var Form; FormClass: TFormClass; ParentControl: TWinControl);
begin
TForm(Form) := FormClass.Create(Application);
with TForm(Form) do
begin
Parent := ParentControl;
Show;
end;
end;
procedure iFormCreate(var Form: TForm; FormClass: TFormClass; ParentControl: TWinControl);
而导致类型不对应,就轻易放弃了。