我的程序使用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."就会报错,如果去掉则正常。请问这是为什么?谢谢大家!

解决方案 »

  1.   

    就是“Access violation at address ...”,在FormCreate事件的第一个含有"Form1."的地方。@lenism521 :名字冲突什么意思呢?如果代码写在form1show中则正常。
      

  2.   

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

  3.   

    @starluck:比如控件Label1,我的那个程序Form1.Label1和Label1有什么区别?直接写Label1其实不也是Form1.Label1吗?
      

  4.   


    你要理解  类与类变量的关系,这点很重要.面向对象,如果用你这种方法就比较死了.
    多用  self.lable1  非 form1