>[success]百度網盤中可下載源碼
源碼文件名: 附加信息TList泛型擴展.zip
```
unit uSimpleListEx;
interface
uses
System.Classes, Generics.Collections;
type
TSimpleListEx<T> = class(TList<T>)
protected
procedure FreeItem(AItem: T); virtual;
public
procedure ClearAndFreeAllItems;
destructor Destroy; override;
end;
TClassSimpleListEx<T: Class, constructor> = class(TSimpleListEx<T>)
protected
procedure FreeItem(AItem: T); override;
public
function AddNewOne: T; // 創建一個新的 Item
end;
implementation
{ TSimpleListEx<T> }
procedure TSimpleListEx<T>.ClearAndFreeAllItems;
var
Q: T;
begin
for Q in self do
begin
FreeItem(Q);
end;
Clear;
end;
destructor TSimpleListEx<T>.Destroy;
begin
ClearAndFreeAllItems;
inherited;
end;
procedure TSimpleListEx<T>.FreeItem(AItem: T);
begin
end;
{ TClassSimleListEx<T> }
function TClassSimpleListEx<T>.AddNewOne: T;
begin
Result := T.Create;
add(Result);
end;
procedure TClassSimpleListEx<T>.FreeItem(AItem: T);
begin
inherited;
AItem.free;
// 已經知道他是 TObject ,就這樣釋放
end;
end.
```
*****
```
unit uMyWorkList;
interface
uses
SysUtils, uSimpleListEx;
type
TMyWorkItemBase = class
public
function ToDetail: string; virtual;
public
ID: integer;
end;
TMyWorkItemOne = class(TMyWorkItemBase)
public
function ToDetail: string; override;
public
Age: integer;
Info: string;
end;
TMyWorkItemList<T: TMyWorkItemBase, constructor> = class(TClassSimpleListEx<T>)
public
function GetItemById(AId: integer): T;
end;
TMyWorkItemOneList = class(TMyWorkItemList<TMyWorkItemOne>);
implementation
{ TMyWorkItemList<T> }
function TMyWorkItemList<T>.GetItemById(AId: integer): T;
var
Q: T;
begin
Result := nil;
for Q in self do
begin
if Q.ID = AId then
begin
Result := Q;
break;
end;
end;
end;
{ TMyWorkItemBase }
function TMyWorkItemBase.ToDetail: string;
begin
Result := '-------------'#13#10'id:' + inttostr(ID);
end;
{ TMyWorkItemOne }
function TMyWorkItemOne.ToDetail: string;
var
r: string;
begin
r := inherited;
Result := r + #13#10;
Result := Result + 'age:' + inttostr(Age) + #13#10;
Result := Result + 'Info:' + Info;
end;
end.
```
- 0.1 教程說明
- 0.2 delphi xe8 安裝
- 0.2.2 XE 10.3.3 安裝
- 0.3 delphi IDE 的非常必要的配置
- 0.4 調試中的異常處理
- 0.5 工程路徑設置
- 0.6 開發工具界面切換成中文的問題
- 一、實用技巧
- 0.嘗試為event取名叫伊文特
- 1.各種(變量)數據在內存中是什么樣子的?
- 2
- 3
- 4.亂碼問題
- 5
- 二、多線程
- 三、DLL相關
- 1.DLL中函數參數如何設計?
- 2.調用易語言DLL識別驗證碼
- 四、界面設計
- 1.關于解耦問題
- 2.登錄功能設計
- 五、面向對象基礎知識
- 1.窗口間傳遞值
- 3.避免又臭又長的裹腳布
- 2.擴展 TStringGrid , delphi 7 示例
- 六、初學者誤區集錦
- 七 TList 集合
- 1.附加信息Pointer設計
- 2.用 TList 來建立組件間的聯系
- 3.泛型 TList<T> 示例