如何在程序中使用新的动态连接库中定义的新控件类(开发插件)?(100分)

  • 主题发起人 主题发起人 piney
  • 开始时间 开始时间
P

piney

Unregistered / Unconfirmed
GUEST, unregistred user!
本人欲开发自己的插件,具体是自己在动态连接库中定义新的控件类(TNewControl),然后在应用程序中注册此类,以便做到Plugin,试问如何开发?
 
动态连接库再设一方法,应用程序通过此方法来调用控件的方法.
一个猜想,没试过.
 
可以啊,参见《Delphi 3从入门到精通》
 
西西,我们自己做了一个支持插件得东西,全部得源程序是没有,不过有个简单得不
能再简单得例子,你可以领会一下思想,我们得做法不是标准做法,可是能够用。

<a href="http://www.btinternet.com/~yang/download/PlugIn.zip">这儿<a href>
 
DNChen's html builder is good.
i think u could use COM though i do not like it
 
to DNChen
your link perhaps has some problem
 
不是perhaps, 是must拉
 
大家都知道,支持插件的软件在COM出台之前就已经有了,所以我既不想应COM也不想用.VBX或.OCX,望各高手指点。
另DNChen所提供的程序不能Download,望更正之。
谢谢!!!
 
哦,看到了,明天我来发地址,今天太晚了!
 
谢谢你 DNChen
 
不过注意,这个东西只使用于使用DELPHI开发PLUG-IN,而不是其它的语言(C/C++/VB)
如果要使其成为通用的东西,那么还是用COM
当然,你也可以模仿COM开发一套自己的接口,不过估计比较痛苦
 
http://202.96.217.5/~hamlet/PLUGIN.zip (大小写铭感)


具体你先看看再说,这是一个可以运行的插件例子,一个是主程序,form创建时自动读取插件,无须其他任何特殊控件

抱歉,晚了一天,昨天很忙!
 
压缩包收到了,但我想开发对象的插件,我曾试过用此方法:

// my dll:

TNewControl = class(TBitBtn)
end;

function GetNewControl: TControlClass;

// my app:

procedure TForm1.test;
var
AControl: TControl;
begin
AControl := GetNewControl.Create(Self);
AControl.Parent := Form1;
{
当此语句执行时,会出现一错误为
"Cannot assign a TFont to a TFont"的消息
}
end;

试问如何解决???
另,谢谢 DNChen
 
看来没有人能回答我这个问题了!!!
 
Delphi里面用到的package实质上就是一个Dll, 但是里面放了很多的Delphi的对象.
package是可以通过LoadPackage动态调入, 里面的class也可以动态生成.
 
  要使用控件必须先注册,即:
   RegisterComponent
  我猜想你所说的PLUG-IN应指的是使用DLL,因此必须在装载DLL后执行DLL
内部的程序注册Component,如果你用的不是Component的子类可参考响应的VCL
源程序中有关注册控件的方法,无非是返回一个类的地址并记录之。
  也就是说,在每一个DLL中定义一个标准的过程用来注册“类”,记得以前曾
写过一个小程序,可实现此功能。
  另外,我这里有一个示例程序是用Package的,找不到压缩文件了,如果你要
我可压缩一份EMail给你,实际上Delphi IDE就是用这种方法做的。
 
天啊,这么久才有人回应,但我想用Package不是唯一的办法吧?!!
 
Some body finish it, please!
 
到http://www.obsof.com/去看看,做得非常好!
 
后退
顶部