博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
测试 TList
阅读量:6092 次
发布时间:2019-06-20

本文共 3721 字,大约阅读时间需要 12 分钟。

  hot3.png

// 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、Lastvar  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、Extractvar  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;

转载于:https://my.oschina.net/hermer/blog/319994

你可能感兴趣的文章
排序算法前言
查看>>
OpenStack 中neutron 项目的debug过程中资源加载的思维导图
查看>>
Nginx实现负载均衡
查看>>
Caused by: java.lang.ClassNotFoundException: org.aopalliance.intercept.MethodInterceptor
查看>>
LVS 简单入门DR模式
查看>>
ZOJ - 3992 - One-Dimensional Maze (思维)
查看>>
jenkins build.xml
查看>>
centos6上搭建postfix+dovecot+saslauthd邮件服务器
查看>>
js打印出对象的方法
查看>>
五、文件操作(二)
查看>>
查看操作主机
查看>>
SCCM2012R2之四发现方法
查看>>
OCF开发者指南 第三章
查看>>
也谈大公司病4——大公司中的反模式
查看>>
解决方案营销过程中对行业、对客户的定位
查看>>
AIX内存性能优化和监视
查看>>
MYSQL远程登录权限设置 ,可以让Navicat远程连接服务器的数据库
查看>>
我的无线宽带由器 TP-LINK TL-WR841N如何设置限
查看>>
windowns server 2008 r2 AD桌面文件重定向设置
查看>>
根据格式字符串转换数字字符串
查看>>