怎样在DLL中动态创建TSpeedButton,TPanel等可视控件及定义事件?请不要给我举如何创建窗体的例子。谢谢!
最好有Demo。我的代码:
procedure CreateControl(aParent:TWinControl);stdcall;
var
  NewButton:TSpeedButton;
begin
  NewButton:=TSpeedButton.Create(aParent);
  NewButton.Parent:=aParent;
  NewButton.Caption:='aaa';
  aNewButton.Left:=0;
  NewButton.Top:=0;
  NewButton.Width:=30;
  NewButton.Height:=40;
  NewButton.OnClick:=CustEvent;  //自定义事件
end;

解决方案 »

  1.   

    你看一下网上的一个例子
    在DLL创建MDIFORM,跟你这个差不多的
      

  2.   

    创建Form是可以的,但创建控件有问题。
      

  3.   

    這樣, 可能有點問題, 如果真的要, 建議你還是用 package, dll 和 exe 的內存空間, 并不是完全相同的參考如下:
    different between BPL and DLL
    http://borland.mblogger.cn/aiirii/posts/12450.aspx
      

  4.   

    这是因为你的内存中产生了两个vcl类库所致(一个在exe中,一个在dll中)。两者的名称相同但地址不同,所以有时候访问起来会出现错误。最简单的方法就是使用动态连接包,但是发布的时候记得把相关的bpl包含进去。此外就是使用Handle和ParentWindow完成设置Parent的设置,但这也只能解决显示上的问题。另外在数据操作上可以使用接口对你的界面元素进行再封装,这是一种比较可靠的解决方法。