以TFtpServer组件为例
如果我要建立一个名为FtpServer1的TFtpServer组件,
并为该组件创建一个FtpServer1Authenticate的过程,
用显式调用的方法很容易实现:在窗体中添加一个TFtpServer组件就行了.但是现在我想隐式建立一个这样的组件及其相关过程,
从而达到不在窗体中添加组件的目的,请问该如何声明组件及过程?调用?还有,隐式建立组件能使编译后的程序更小吗?

解决方案 »

  1.   

    动态创建,很简单
    首先uses该组件单元
    创建FtpServer1 := TFtpServer.Create;
    给组件添加过程先写个FtpServer1Authenticate,
    然后把该过程赋给组件的相应属性,如FtpServer1.OnAuthenticate := FtpServer1Authenticate;其实两种创建的方式没多大区别,就是动态创建要多写些代码,一般动态创建用在没有窗体或要创建多个相同组件的地方
      

  2.   

    能讲清楚点吗?
    比如 创建FtpServer1  :=  TFtpServer.Create;  是在implementation里面创建?
    之前需要在 public 里先声明吗?
      

  3.   

    然后把该过程赋给组件的相应属性,如FtpServer1.OnAuthenticate := FtpServer1Authenticate;
    \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    好像不能这样赋值,类型不匹配
      

  4.   

    给你贴一个算了unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, FtpSrv,FtpSrvC;//FtpSrv和FtpSrvC要用到的单元type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure FtpServer1Authenticate(Sender: TObject;
          Client: TFtpCtrlSocket; UserName, Password: TFtpString;
          var Authenticated: Boolean);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FtpServer1Authenticate(Sender: TObject;
      Client: TFtpCtrlSocket; UserName, Password: TFtpString;
      var Authenticated: Boolean);
    begin
      //你的事件代码
    end;procedure TForm1.Button1Click(Sender: TObject);
    var FtpServer1:TFtpServer;
    begin
      FtpServer1:=TFtpServer.Create(self); //创建
      FtpServer1.OnAuthenticate:=Form1.FtpServer1Authenticate;//连接事件
      FtpServer1.Addr:='192.168.1.1';//其它设置
      //FtpServer1.Free;  // 最后释放
    end;end.
      

  5.   

    thanks!!!!!!!
    今晚测试.
    再次握手,呵呵
      

  6.   

    to 老之:
      这样我的程序还是减肥不了,有办法不用use单元,只启用想要用到的事件吗?
      比如我只需要用到TFtpServer的OnAuthenticate事件?
      

  7.   

    呵呵,理论上可以,重新编译pas文件,进行优化,不过你得看得懂它的源码。