Q&A

  • TList를 이용한....
제가 어떠한 객체를 생성해서 그것들을 가지고 작업을 할려고 합니다.

저는 기존에 객체들을 미리 선언된 배열에 잡아넣고서 사용했었는데

그것보다는 TList를 사용해서 하는게 더 관리하기 쉽다고 하는데...

생성할때 어떻게 넣고 어떻게 불러서 사용하는지를

잘 모르겠습니다..

혹시 잘아시는 고수님 계시면 답변 부탁드립니다...

혹시 예제있으시면 간단한 예제소스라도 같이 보여주심 더욱 감사하겠습니다

그럼 오늘도 즐거운 하루 되시길...

1  COMMENTS
  • Profile
    이준해 2002.04.11 23:48


    Type

    (*--- Write Your Class or Structure -------*)
       TMyObject = class(TObject)
         Code: string;
         Name: string;
         remark: string;
       end;

    (*--- Write List Class for your Class or Structure ---*)
       TMyObjectList = class(TList)
         function GetItemAt(i: Integer): TMyObject ;
       public
         destructor Destroy; override;
         function Add(f: TMyObject ): Integer;
         property ItemAt[i: Integer]: TMyObject read GetItemAt;
       end;

    var
       MyList: TMyObjectList;

    Implementation


    function TMyObjectList .ItemAt(i: Integer): TMyObject ;
    begin
       result := TMyObject(Items[i]);
    end;

    function TMyObjectList .Add(f: TMyObject ): Integer;
    begin
       result := inherited add(f);
    end;

    destructor TMyObjectList .Destroy; override
    var
      anObj: TMyObject;
    begin
        while Count > 0 do begin
            anObj := ItemAt[0];
            delete(0);
            anObj.free;
       end;
       inherited;
    end;
          
    procedure BuildMyList(aDataSet: TDataSet);
    var
      anObj: TMyObject;
    begin
       if Assigned(MyList) then MyList.Free;
       MyList := TMyObjectList.Create;

       while not aDataSet.eof do begin
           anObj := TMyObject.create;
           anObj.Code := aDataSet.fieldByName('Code').AsString;
           anObj.Name := aDataSet.fieldByName('Name).AsString;
           anObj.Remark := aDataSet.fieldByName('Remark').AsString;
           MyList.add(anObj)
       end;
    end;
      
    도움이 되길 바랍니다.

    이준해