如何把DLL中窗体上的控件移到调用程序的窗体上!(200分)

  • 主题发起人 主题发起人 firstboy
  • 开始时间 开始时间
F

firstboy

Unregistered / Unconfirmed
GUEST, unregistred user!
如何把DLL中窗体上的控件移到调用程序的窗体上
[:)]
 
理论上很多东西都是可以的,,,,

但,,,

我的 技术还没达到,,,

我想,,,这至少和 DOCK 相关,,,,我也去找找资料,,关心关心,,呵呵,
 
DLL中控件只是一个具有虚拟方法和数据的类而已(因为DLL中只有DS,没有SS)。要将DLL中
的控件放到主窗体上,你可以在主窗体上引出这个类(不过你的DLL要有这个接口)。
因为在DLL中只有虚拟方法,你必须向引用他的主窗体返回虚拟方法的指针表VTable,并在
你的主窗体上具体实现这些方法。这样你就可以在你的主窗体上拥有并操作这个控件了。
如果还有不明白的地方,建议看看COM编程方面的资料!
 
to :晶晶
能否给出范例!
 
我式过用改变控件parent属性
先将调用程序的窗体的类传给DLL
然后改变DLL窗体上的控件的.parent:=程序的窗体的类;
但是发生TFONT无法传递的错误!
 
没有做过这种例子,现在很忙,过两天做好了发给你吧
 
传递句柄可以解决,但只能操控控件,无法响应定义的事件
 
如果仅仅只是移动控件,用Windows.SetParent函数就可以了
但是具体操作控件的代码还是得在DLL中写
 
例如我在dll中生成一个按钮,
k-button:=tbutton.create(pp:tform);
K-button.parentwindow:=pp.handle;
k_button.onclik:=tj.pro;
procedure tj.pro;
begin
messagebox('kk');
end;
只能生成按钮,
根本响应不了
若是pp.onclik:=tj.pro;//pp使我传过来的对象
就可以,怎么才能解决
 
后退
顶部