他是定义了一个类继承组如下:
    TTerminalConnectList = class(TList)
    public
        procedure Add(AEvent: TTerminalConnectEvent);
        procedure Remove(AEvent: TTerminalConnectEvent);
        procedure Delete(nIndex: integer);
        procedure Clear; override;
    private
        function FGetItem(nIndex: integer): TTerminalConnectEvent;
    public
        property Items[nIndex: integer]: TTerminalConnectEvent read FGetItem;
    end;定义了该类的对象组
    _lstConnect: TTerminalConnectList;这段是我不明白的,应该是在代码中对对象添加一个子项吧。
procedure TTerminalNotify.NotifyOnConnect(ASender: TObject;
    APoint: TCXZPoint; ASocket: TCustomWinSocket);
var
    i: integer;
begin
    for i := 0 to _lstConnect.Count - 1 do
    begin
        _lstConnect.Items[i](ASender, APoint, ASocket);
    end;
end;
我不明白的地方是
1、添加子项为什么还用for循环。
2、_lstConnect应该是对象组,它的成员Items[i]是成员,后面接括号好像又成了函数,我的基础不是太好,请熟悉的人能帮我解惑。谢谢!

解决方案 »

  1.   

    TTerminalConnectEvent是一个事件类型,也就是一个过程类型。下面这段代码也不是添加列表项,而是循环调用以前存放的事件过程(TTerminalConnectEvent类型)。添加事件过程项应该是在其他代码中进行的。procedure   TTerminalNotify.NotifyOnConnect(ASender:   TObject; 
            APoint:   TCXZPoint;   ASocket:   TCustomWinSocket); 
    var 
            i:   integer; 
    begin 
            for   i   :=   0   to   _lstConnect.Count   -   1   do 
            begin 
                    _lstConnect.Items[i](ASender,   APoint,   ASocket); 
            end; 
    end; 
      

  2.   

    _lstConnect也不是一个对象组,而是一个TTerminalConnectEvent类型列表,当然,你也可以把它当作一个数组看待,他的Items[i]就是一个个事件过程
      

  3.   

    procedure   TTerminalNotify.NotifyOnConnect(ASender:   TObject; 
            APoint:   TCXZPoint;   ASocket:   TCustomWinSocket); 
    这个事件的意思应该不是你所说的增加项目用的。它会不会表示:当_lstConnect与数据库或数据源绑定、链接时所触发(刷新)事件
      

  4.   

    maozefa
    那它如果是一个类似于数组的TTerminalConnectEvent类型列表,那么调用它里面的过程_lstConnect.Items[i]时参数怎么是NotifyOnConnect事件的参数
    而不是               procedure   Add(AEvent:   TTerminalConnectEvent); 
                    procedure   Remove(AEvent:   TTerminalConnectEvent); 
                    procedure   Delete(nIndex:   integer); 
                    procedure   Clear;   override; 
    这几个过程的参数呢?
    请帮忙解惑!
      

  5.   

    论坛真有高人啊,一眼看出TTerminalConnectEvent是一个事件类型。代码之前的确定义了该类型:
        TTerminalConnectEvent = procedure(Sender: TObject; APoint: TCXZPoint; ASocket: TCustomWinSocket) of object;
    但我还是不能理解,该过程又没有什么处理内容,调用本身有什么用处呢?