📄 myobjectlist.pas
字号:
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.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -