www.pudn.com > _JEDI_VCL__JVCL333CompleteJCL1101-Build2725.zip > MyObjectList.pas, change:2006-05-18,size:4237b


unit MyObjectList; 
 
interface 
 
uses 
  JclContainerIntf, JclArrayLists; 
 
type 
  TMyObject = class(TObject) 
  private 
    FInt: Integer; 
    FStr: string; 
  public 
    property Int: Integer read FInt write FInt; 
    property Str: string read FStr write FStr; 
  end; 
 
  // An ArrayList typed with TMyObject 
  IMyObjectList = interface 
    ['{DB2B366E-2CA6-4AFC-A2C9-3285D252DC3E}'] 
    function Add(AObject: TMyObject): Boolean; overload; 
    function AddAll(ACollection: IJclCollection): Boolean; overload; 
    procedure Clear; 
    function Contains(AObject: TMyObject): Boolean; 
    function ContainsAll(ACollection: IJclCollection): Boolean; 
    function Equals(ACollection: IJclCollection): Boolean; 
    function First: IJclIterator; 
    function IsEmpty: Boolean; 
    function Last: IJclIterator; 
    function Remove(AObject: TMyObject): Boolean; overload; 
    function RemoveAll(ACollection: IJclCollection): Boolean; 
    function RetainAll(ACollection: IJclCollection): Boolean; 
    function Size: Integer; 
 
    procedure Add(Index: Integer; AObject: TMyObject); overload; 
    function AddAll(Index: Integer; ACollection: IJclCollection): Boolean; overload; 
    function GetObject(Index: Integer): TMyObject; 
    function IndexOf(AObject: TMyObject): Integer; 
    function LastIndexOf(AObject: TMyObject): Integer; 
    function Remove(Index: Integer): TMyObject; overload; 
    procedure SetObject(Index: Integer; AObject: TMyObject); 
    function SubList(First, Count: Integer): IJclList; 
  end; 
 
  TMyObjectList = class(TJclArrayList, IMyObjectList) 
  protected 
    { IJclCollection } 
    function Add(AObject: TMyObject): Boolean; overload; 
    function AddAll(ACollection: IJclCollection): Boolean; overload; 
    procedure IMyObjectList.Clear = Clear; 
    function Contains(AObject: TMyObject): Boolean; 
    function IMyObjectList.ContainsAll = ContainsAll; 
    function IMyObjectList.Equals = Equals; 
    function IMyObjectList.First = First; 
    function IMyObjectList.IsEmpty = IsEmpty; 
    function IMyObjectList.Last = Last; 
    function Remove(AObject: TMyObject): Boolean; overload; 
    function IMyObjectList.RemoveAll = RemoveAll; 
    function IMyObjectList.RetainAll = RetainAll; 
    function IMyObjectList.Size = Size; 
  protected 
    { IJclList } 
    procedure Add(Index: Integer; AObject: TMyObject); overload; 
    function AddAll(Index: Integer; ACollection: IJclCollection): Boolean; overload; 
    function GetObject(Index: Integer): TMyObject; 
    function IndexOf(AObject: TMyObject): Integer; 
    function LastIndexOf(AObject: TMyObject): Integer; 
    function Remove(Index: Integer): TMyObject; overload; 
    procedure SetObject(Index: Integer; AObject: TMyObject); 
    function IMyObjectList.SubList = SubList; 
  end; 
 
implementation 
 
{ TMyObjectList } 
 
procedure TMyObjectList.Add(Index: Integer; AObject: TMyObject); 
begin 
  inherited Insert(Index, AObject); 
end; 
 
function TMyObjectList.Add(AObject: TMyObject): Boolean; 
begin 
  Result := inherited Add(AObject); 
end; 
 
function TMyObjectList.AddAll(ACollection: IJclCollection): Boolean; 
begin 
  Result := inherited AddAll(ACollection); 
end; 
 
function TMyObjectList.AddAll(Index: Integer; 
  ACollection: IJclCollection): Boolean; 
begin 
  Result := inherited InsertAll(Index, ACollection); 
end; 
 
function TMyObjectList.Contains(AObject: TMyObject): Boolean; 
begin 
Result := inherited Contains(AObject); 
end; 
 
function TMyObjectList.GetObject(Index: Integer): TMyObject; 
begin 
  Result := TMyObject(inherited GetObject(Index)); 
end; 
 
function TMyObjectList.IndexOf(AObject: TMyObject): Integer; 
begin 
  Result := inherited IndexOf(AObject); 
end; 
 
function TMyObjectList.LastIndexOf(AObject: TMyObject): Integer; 
begin 
  Result := inherited LastIndexOf(AObject); 
end; 
 
function TMyObjectList.Remove(AObject: TMyObject): Boolean; 
begin 
  Result := inherited Remove(AObject); 
end; 
 
function TMyObjectList.Remove(Index: Integer): TMyObject; 
begin 
  Result := TMyObject(inherited Remove(Index)); 
end; 
 
procedure TMyObjectList.SetObject(Index: Integer; AObject: TMyObject); 
begin 
  inherited SetObject(Index, AObject); 
end; 
 
end.