// Add、Count、Items[n]
var
List: TList; {声明 List}
frmRed: TForm; {用于测试的对象, 这里选择了窗体}
begin
List := TList.Create; {建立列表}
frmRed := TForm.Create( nil); {建立 frmRed}
frmRed.Caption := 'Red' ; {frmRed 标题}
frmRed.Color := clRed; {frmRed 颜色} List.Add(frmRed); {添加到列表}
ShowMessage(IntToStr(List.Count)); {1; 列表元素总数}
//TForm(List.Items[0]).ShowModal; {调用对象}
TForm(List[ 0 ]).ShowModal; {调用对象, 比上一行的写法简洁, 但是一样的}
frmRed.Free;
List.Free;
end;
// Insert、Remove、Delete、Clear、First、Last
var
List: TList;
frmRed,frmGreen,frmBlue: TForm;
i: Integer;
begin
List := TList.Create;
{建立两个窗体: 红色、绿色}
frmRed := TForm.Create( nil);
frmRed.Caption := 'Red' ;
frmRed.Color := clRed;
frmGreen := TForm.Create( nil);
frmGreen.Caption := 'Green' ;
frmGreen.Color := clGreen;
{添加到 List}
List.Add(frmRed);
List.Add(frmGreen);
{再建立一个蓝色窗体}
frmBlue := TForm.Create( nil);
frmBlue.Caption := 'Blue' ;
frmBlue.Color := clBlue;
{插入到 List}
List.Insert( 0 , frmBlue);
ShowMessage(IntToStr(List.Count)); {3}
TForm(List.First).ShowModal; {显示第一个: 蓝色窗体}
TForm(List.Last).ShowModal; {显示最后一个: 绿色窗体}
{看看红色窗体是第几个?}
i := List.IndexOf(frmRed);
ShowMessage(IntToStr(i)); {1; 是第二个}
{从列表中删除 - 用对象指针}
List.Remove(frmRed);
ShowMessage(IntToStr(List.Count)); {2}
frmRed.ShowModal; {frmRed 依然存在, 只是不在列表中了}
{从列表中删除 - 用元素索引}
List.Delete( 0 );
frmBlue.ShowModal; {frmBlue 依然存在, 只是不在列表中了}
{清空列表}
List.Clear;
frmRed.Free;
frmGreen.Free;
frmBlue.Free;
List.Free;
end;
// Capacity、Move、Exchange、Extract
var
List: TList;
frmRed,frmGreen,frmBlue: TForm;
p: Pointer;
i: Integer;
begin
List := TList.Create;
List.Capacity := 3 ; {让 List 准备好接受 3 个元素}
{建立红、绿、蓝三个窗体, 并添加到 List}
frmRed := TForm.Create( nil);
frmRed.Caption := 'Red' ; frmRed.Color := clRed;
frmGreen := TForm.Create( nil);
frmGreen.Caption := 'Green' ; frmGreen.Color := clGreen;
frmBlue := TForm.Create( nil);
frmBlue.Caption := 'Blue' ; frmBlue.Color := clBlue;
List.Add(frmRed);
List.Add(frmGreen);
List.Add(frmBlue);
{依次显示窗体标题}
for i := 0 to List.Count - 1 do
ShowMessage(TForm(List[i]).Caption); {将分别显示: Red Green Blue}
{移动}
List.Move( 2 , 0 ); {把第 3 个转移到第 1 个}
for i := 0 to List.Count - 1 do
ShowMessage(TForm(List[i]).Caption); {将分别显示: Blue Red Green}
{置换}
List.Exchange( 1 , 2 ); {把第 2 个与第 3 个交换}
for i := 0 to List.Count - 1 do
ShowMessage(TForm(List[i]).Caption); {将分别显示: Blue Green Red}
{提取指针}
p := List.Extract(frmGreen);
ShowMessage(TForm(p).Caption); {Green}
frmRed.Free;
frmGreen.Free;
frmBlue.Free;
List.Free;
end;
//定义排序函数
function MySort(p1, p2: Pointer): Integer;
begin
Result := AnsiStrComp(p1,p2);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
List: TList;
frmRed,frmGreen,frmBlue: TForm;
i: Integer;
begin
List := TList.Create;
{建立绿、红、蓝三个窗体, 并添加到 List}
frmRed := TForm.Create( nil);
frmRed.Caption := 'Red' ; frmRed.Color := clRed;
frmGreen := TForm.Create( nil);
frmGreen.Caption := 'Green' ; frmGreen.Color := clGreen;
frmBlue := TForm.Create( nil);
frmBlue.Caption := 'Blue' ; frmBlue.Color := clBlue;
List.Add(frmRed);
List.Add(frmGreen);
List.Add(frmBlue);
{依次显示窗体标题}
for i := 0 to List.Count - 1 do
ShowMessage(TForm(List[i]).Caption); {将分别显示: Red Green Blue}
{排序}
List.Sort(MySort);
for i := 0 to List.Count - 1 do
ShowMessage(TForm(List[i]).Caption); {将分别显示: Blue Green Red}
// FreeAndNil(frmBlue);
// List.Pack; {这个没有测试成功! Pack 应该是清除所有已是 nil 的对象}
{释放所有对象}
for i := 0 to List.Count - 1 do
TForm(List[i]).Free;
List.Free;
end;
var
List: TList; {声明 List}
frmRed: TForm; {用于测试的对象, 这里选择了窗体}
begin
List := TList.Create; {建立列表}
frmRed := TForm.Create( nil); {建立 frmRed}
frmRed.Caption := 'Red' ; {frmRed 标题}
frmRed.Color := clRed; {frmRed 颜色} List.Add(frmRed); {添加到列表}
ShowMessage(IntToStr(List.Count)); {1; 列表元素总数}
//TForm(List.Items[0]).ShowModal; {调用对象}
TForm(List[ 0 ]).ShowModal; {调用对象, 比上一行的写法简洁, 但是一样的}
frmRed.Free;
List.Free;
end;
// Insert、Remove、Delete、Clear、First、Last
var
List: TList;
frmRed,frmGreen,frmBlue: TForm;
i: Integer;
begin
List := TList.Create;
{建立两个窗体: 红色、绿色}
frmRed := TForm.Create( nil);
frmRed.Caption := 'Red' ;
frmRed.Color := clRed;
frmGreen := TForm.Create( nil);
frmGreen.Caption := 'Green' ;
frmGreen.Color := clGreen;
{添加到 List}
List.Add(frmRed);
List.Add(frmGreen);
{再建立一个蓝色窗体}
frmBlue := TForm.Create( nil);
frmBlue.Caption := 'Blue' ;
frmBlue.Color := clBlue;
{插入到 List}
List.Insert( 0 , frmBlue);
ShowMessage(IntToStr(List.Count)); {3}
TForm(List.First).ShowModal; {显示第一个: 蓝色窗体}
TForm(List.Last).ShowModal; {显示最后一个: 绿色窗体}
{看看红色窗体是第几个?}
i := List.IndexOf(frmRed);
ShowMessage(IntToStr(i)); {1; 是第二个}
{从列表中删除 - 用对象指针}
List.Remove(frmRed);
ShowMessage(IntToStr(List.Count)); {2}
frmRed.ShowModal; {frmRed 依然存在, 只是不在列表中了}
{从列表中删除 - 用元素索引}
List.Delete( 0 );
frmBlue.ShowModal; {frmBlue 依然存在, 只是不在列表中了}
{清空列表}
List.Clear;
frmRed.Free;
frmGreen.Free;
frmBlue.Free;
List.Free;
end;
// Capacity、Move、Exchange、Extract
var
List: TList;
frmRed,frmGreen,frmBlue: TForm;
p: Pointer;
i: Integer;
begin
List := TList.Create;
List.Capacity := 3 ; {让 List 准备好接受 3 个元素}
{建立红、绿、蓝三个窗体, 并添加到 List}
frmRed := TForm.Create( nil);
frmRed.Caption := 'Red' ; frmRed.Color := clRed;
frmGreen := TForm.Create( nil);
frmGreen.Caption := 'Green' ; frmGreen.Color := clGreen;
frmBlue := TForm.Create( nil);
frmBlue.Caption := 'Blue' ; frmBlue.Color := clBlue;
List.Add(frmRed);
List.Add(frmGreen);
List.Add(frmBlue);
{依次显示窗体标题}
for i := 0 to List.Count - 1 do
ShowMessage(TForm(List[i]).Caption); {将分别显示: Red Green Blue}
{移动}
List.Move( 2 , 0 ); {把第 3 个转移到第 1 个}
for i := 0 to List.Count - 1 do
ShowMessage(TForm(List[i]).Caption); {将分别显示: Blue Red Green}
{置换}
List.Exchange( 1 , 2 ); {把第 2 个与第 3 个交换}
for i := 0 to List.Count - 1 do
ShowMessage(TForm(List[i]).Caption); {将分别显示: Blue Green Red}
{提取指针}
p := List.Extract(frmGreen);
ShowMessage(TForm(p).Caption); {Green}
frmRed.Free;
frmGreen.Free;
frmBlue.Free;
List.Free;
end;
//定义排序函数
function MySort(p1, p2: Pointer): Integer;
begin
Result := AnsiStrComp(p1,p2);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
List: TList;
frmRed,frmGreen,frmBlue: TForm;
i: Integer;
begin
List := TList.Create;
{建立绿、红、蓝三个窗体, 并添加到 List}
frmRed := TForm.Create( nil);
frmRed.Caption := 'Red' ; frmRed.Color := clRed;
frmGreen := TForm.Create( nil);
frmGreen.Caption := 'Green' ; frmGreen.Color := clGreen;
frmBlue := TForm.Create( nil);
frmBlue.Caption := 'Blue' ; frmBlue.Color := clBlue;
List.Add(frmRed);
List.Add(frmGreen);
List.Add(frmBlue);
{依次显示窗体标题}
for i := 0 to List.Count - 1 do
ShowMessage(TForm(List[i]).Caption); {将分别显示: Red Green Blue}
{排序}
List.Sort(MySort);
for i := 0 to List.Count - 1 do
ShowMessage(TForm(List[i]).Caption); {将分别显示: Blue Green Red}
// FreeAndNil(frmBlue);
// List.Pack; {这个没有测试成功! Pack 应该是清除所有已是 nil 的对象}
{释放所有对象}
for i := 0 to List.Count - 1 do
TForm(List[i]).Free;
List.Free;
end;