Dll窗体创建的问题

luincnyou 2009-01-23 05:42:51
我的程序使用Dll文件做插件。原理是将Dll中的窗体载入到主程序的Panel中。

//此函数定义在Dll中,由主程序调用
//返回创建的窗口句柄供主程序处理
function LoadPlugin(dllParent: THandle): THandle;
begin
Application.Handle := dllParent;
if Form1 =nil then
Form1 := TForm1.Create(Application);

Form1.ParentWindow := dllParent;
Form1.Show;
Result := Form1.Handle;
end;

上面的代码中,如果在Dll窗体的FormCreate事件中出现"Form1."就会报错,如果去掉则正常。请问这是为什么?谢谢大家!
...全文
87 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zydeyu 2009-01-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 starluck 的回复:]


Create 时还类变量还没有建立,你访问肯定会出错的.
[/Quote]

如该兄所产
starluck 2009-01-24
  • 打赏
  • 举报
回复



你要理解 类与类变量的关系,这点很重要.

面向对象,如果用你这种方法就比较死了.


多用 self.lable1 非 form1
luincnyou 2009-01-24
  • 打赏
  • 举报
回复
@starluck:比如控件Label1,我的那个程序Form1.Label1和Label1有什么区别?直接写Label1其实不也是Form1.Label1吗?
starluck 2009-01-24
  • 打赏
  • 举报
回复


Create 时还类变量还没有建立,你访问肯定会出错的.
luincnyou 2009-01-24
  • 打赏
  • 举报
回复
就是“Access violation at address ...”,在FormCreate事件的第一个含有"Form1."的地方。

@lenism521 :名字冲突什么意思呢?

如果代码写在form1show中则正常。
lenism521 2009-01-24
  • 打赏
  • 举报
回复
名字冲突?
starluck 2009-01-24
  • 打赏
  • 举报
回复
报什么错??
luincnyou 2009-01-24
  • 打赏
  • 举报
回复
楼上是什么意思?
lonelyriver 2009-01-24
  • 打赏
  • 举报
回复
……

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧