文档章节

测试 TList

涂孟超
 涂孟超
发布于 2014/09/26 15:34
字数 650
阅读 1
收藏 0
// 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;

本文转载自:http://www.cnblogs.com/del/archive/2007/12/29/1019566.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
FastJSON配合Redis存取处理map数据

伪代码如下:

Alexdevlin
2017/07/26
12
0
vim for php IDE 我的打造过程

vim是一个很强的神器,对于我只用到其中的一小部分内容,接下来是我打造 php IDE的全过程,希望有兄弟能指点我其中的不足,要学习的兄弟能跟我一起努力学习。 第一步:配_vimrc,配成自己喜欢...

路边拾草人
2011/04/16
10.2K
21
list iterator not incrementable

在VC6中 list<T*> Tlist; list<T*>::iterator iter; iter=Tlist.end(); 再 iter++; 此时iter的游标位置和iter.begin()相等 但在VC6以后的版本中,比如VC2002,2005,2008中 list<T*> Tlist; li......

ryany
2010/11/29
0
0
[转]vim ctags使用方法

windows下很多人都使用source insight 编写和查看代码。linux下可以使用VIM,刚开始会觉得VIM像windows下的记事本,而如果使用得当,它并不比source insight 逊色。 在这里,我会尽我所能细致...

文艺小青年
2017/07/13
0
0
windows环境中vim插件配置(便利的vim)

打开vim的文件类型自动检测功能:filetype on,就是在vimrc文件中加上filetype on 1.ctags 1.1ctags功能: tags是个exe文件,在shell中执行来在工程目录中创建tags(就是函数的映射关系),适...

_FreeDoM
2014/06/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 修改导航显示选项

选择 子页面(Child pages)来在边栏中查看当前页面的子页面。 选择 页面树(Page tree)来查看整个空间的页面树,扩展当前的页面。 你也可以选择是否完全隐藏导航显示选项或者添加你希望可见...

honeymose
24分钟前
0
0
Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
3
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0
Cnn学习相关博客

CNN卷积神经网络原理讲解+图片识别应用(附源码) 笨方法学习CNN图像识别系列 深度学习图像识别项目(中):Keras和卷积神经网络(CNN) 卷积神经网络模型部署到移动设备 使用CNN神经网络进行...

-九天-
昨天
5
0
flutter 底部输入框 聊天输入框 Flexible

想在页面底部放个输入框,结果键盘一直遮住了,原来是布局问题 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("评论"), ...

大灰狼wow
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部