能不能将一些非可视组件比方说socket控件封装到类中去,最后生成动态链接库,但是还要保留原有组件的事件,比如onDataArrival。

解决方案 »

  1.   

    当然可以了,不过不知道你什么要这样做,如果这个最后生成的东东是给DELPHI用的,你只不过是要包装一下,那就用PACKAGE,生成BPL。如果是要生成DLL就比较麻烦,需要将相关事件转写成可以通用的函数形式exports。
      

  2.   

    能够说的更详细一些吗?或者来点儿例子就更好了。
    因为程序很大,中间有些模块想做到DLL里去,减少程序的体积,而且以后维护也方便一些。
      

  3.   

    还有一点,就是DLL自身能够响应组件本身的事件。比如把Socket封装进去,DLL能够响应OnDataArrival事件,经过处理后将处理结果返回给调用程序。
      

  4.   

    凭记忆写的,可能有些细节不对
    组件部分
    type 
             TClickEvent=procedure of object;
             Taa= class(Tobject)
               private:
                  FOnClick: TClickEvent;
                  procedure UseEvent;
               publiched:
                  property OnClick:TClickEvent read FOnClick write FOnClick;implementation
    procedure Taa.UseEvent;
    begin
        if Assign(FOnClick) then
             FOnClick;                    ///这里实质上调用了Tbb.Click
    end;使用部分
    一个类
            Tbb=class(TForm)
              aa:Taa;
         
              public:
                   constructor create;
                   procedure Click;implementation
            
    constructor Tbb.Create;
    begin
        aa.OnClick=Click;
    end;
    procdure Tbb.Click;
    begin
    ............
    end;