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,但 ...
随机推荐
- Log4j指定输出日志的文件
在Log4j的配置文件中,有一个log4j.rootLogger用于指定将何种等级的信息输出到哪些文件中, 这一项的配置情况如下: log4j.rootLogger=日志等级,输出目的地1,输出目的地 ...
- BZOJ 1878(离散化+线段树)
题面 传送门 分析 首先我们观察到区间范围较大,而区间个数较少,考虑离散化,将所有询问按照右端点进行排序 离散化之后研究区间颜色个数变化的规律 当我们处理到第a[i]个段时,设a[i]上一次出现的地方 ...
- python学习笔记(7): 面向对象
class Foo: #类中的函数 def bar(self): #功能阐述 print('Bar') pass def hello(self,name): print('i am %s' %name ...
- vue-cli-webpake搭建和配置
确认创建项目后,后续还需输入一下项目名称.项目描述.作者.打包方式.是否使用ESLint规范代码等等,详见上图.安装顺利执行后会,生成如下文件目录:1.全局化安装cnpm npm install cn ...
- MVC加深理解
MVC MVC约定:Controllers文件夹 对应 Views文件夹:所有子文件的名称一一对应. 页面请求 -> 路由 -> 找到 controller/action -> re ...
- sqli-5&6
第五关 Double Injection - Single Quotes - String (双注入GET单引号字符型注入) 1.发现前几关的方法都不能用了,要么报错(没有其他有关信息.要么什么也不出 ...
- tf.expand_dims
想要增加一维,可以使用tf.expand_dims(input, dim, name=None)函数 t = np.array(np.arange(1, 1 + 30).reshape([2, 3, ...
- 前端学习记录(HTML篇)
HTML Hyper Text Markup Language,超文本标记语言,不是一种编程语言,而是一种标记语言 思想:网页中有很多数据,不同的数据可能需要不同的显示效果,一个标签相当于一个容器,想 ...
- 三条路线告诉你如何掌握Spring IoC容器的核心原理
原文链接:https://blog.csdn.net/bntx2jsqfehy7/article/details/78977178
- APP稳定性测试-monkey执行
Monkey命令行可用的全部选项 *示例 : adb shell monkey -p cn.lejiayuan.alpha --pct-touch 30 --pct-motion 15 --pct-t ...