Delphi中Tlist实例
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
btn1: TButton;
btn2: TButton;
btn3: TButton;
btn4: TButton;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure btn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
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); {添加到列表}
frmRed:=TForm.Create(nil); {又建立个frmred}
frmRed.Caption:='bre'; {frmred 标题}
frmRed.Color :=clBlue; {frmred 颜色}
List.Add(frmRed); {添加到列表}
ShowMessage(IntToStr(List.Count)); {1; 列表元素总数}
//TForm(List.Items[0]).ShowModal; {调用对象}
TForm(List[0]).ShowModal; {调用对象, 比上一行的写法简洁, 但是一样的}
TForm(List[1]).ShowModal;
frmRed.Free;
List.Free;
end;
procedure TForm1.btn2Click(Sender: TObject);
// 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;
procedure TForm1.btn3Click(Sender: TObject);
// 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;
end.
Delphi中Tlist实例的更多相关文章
- Delphi中TList类应用
在DELPHI中指针最常见的就是和类TLIST结合起来使用.下面是一个很简单的例子,希望对这个例子的分析能让大家对使用TLIST类有一个简单的认识. 代码的功能是使用指针和Tlist来生成一个牌串,并 ...
- Delphi中线程类TThread实现多线程编程2---事件、临界区、Synchronize、WaitFor……
接着上文介绍TThread. 现在开始说明 Synchronize和WaitFor 但是在介绍这两个函数之前,需要先介绍另外两个线程同步技术:事件和临界区 事件(Event) 事件(Event)与De ...
- Delphi中解析Xml的控件-SimDesign NativeXml
Delphi中解析Xml的控件-SimDesign NativeXml 正在学习,感觉应用很方便.无源代码的版本还是免费的. SimDesign.NativeXml是一个delphi和bcb的XML控 ...
- 转发 Delphi中线程类TThread 实现多线程编程
Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchr ...
- 转:Delphi中使用比较少的一些语法
http://www.cnblogs.com/Murphieston/p/5577836.html 本文是为了加强记忆而写,这里写的大多数内容都是在编程的日常工作中使用频率不高的东西,但是又十分重要. ...
- Delphi中的线程类 - TThread详解
Delphi中的线程类 - TThread详解 2011年06月27日 星期一 20:28 Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本 ...
- Delphi中的线程类(转)
Delphi中的线程类 (转) Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对 TThread类的几个成员作一简单介绍,再说明一下 ...
- Delphi中使用比较少的一些语法
本文是为了加强记忆而写,这里写的大多数内容都是在编程的日常工作中使用频率不高的东西,但是又十分重要. ---Murphy 1,构造和析构函数: a,构造函数: 一般基于TComponent组件的派生类 ...
- Delphi中的接口和抽象类
参考:http://blog.csdn.net/xinzheng_wang/article/details/6058643 接口:Interface Delphi中接口中的关键字Interface,但 ...
随机推荐
- java基础常问面试题
1.面向对象和面向过程的区别 面向过程 :面向过程性能比面向对象高. 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机.嵌入式开发.Linux/Unix ...
- Python pass是空语句用法
在条件判断,还是函数中,有时候不需要输出任何东西,也不能留空,python提供空的语句,下面讲述pass空语句的用法 1,关键词 pass 2,用法 for letter in 'Python': i ...
- spark cli
Spark SQL CLI Spark1.1增加了Spark SQL CLI和ThriftServer SparkSQL CLI配置 1.创建并配置hive-site.xml 在运行Spark SQL ...
- JavaScript异步的底层原理
JavaScript引擎属于单线程作业,意味着:在同一时间只能执行一个代码块,这些代码块的执行就阻塞了异步事件的处理. 因此,出现了"任务队列"(task queue),我们可以将 ...
- rsync 和 inotify 结合
我们知道 rsync 可以实现推送和拉取,而 inotify-tools 借助内核的 inotify 机制实现了文件的 实时监控.因此,借助这个思路,我们可以通过使用 shell 脚本,调整 inot ...
- 动态规划—distinct-subsequences
题目: Given a string S and a string T, count the number of distinct subsequences of T in S. A subseque ...
- cp 复制文件或目录
1. 命令功能 cp --copy files and directories.复制文件或目录. 2. 语法格式 cp [option] source des cp [option] sour ...
- Java实现代理服务器
Web代理(proxy)服务器是网络的中间实体. 代理位于Web客户端和Web服务器之间,扮演"中间人"的角色. HTTP的代理服务器即是Web服务器又是Web客户端. 代理服务器 ...
- 对promise的研究1
通过看阮一峰老师的文章写出来的特此注明 1.Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大.它由社区最早提出和实现,ES6 将其 ...
- windows系统如何查看物理cpu核数,内存型号等
首先,我们需要打开命令行模式,利用win+r键打开运行,输入cmd回车即会出现 然后在命令行界面输入wmic进入命令行系统管理执行脚本界面 然后我们通过cpu get *可以查看cpu的具 ...