http://blog.163.com/jiandande3218@126/blog/static/74728469201132721428194/

Delphi中Tlist实例

2011-04-27 14:14:28|  分类: Delphi学习 |  标签:list  frmred  tform  frmblue  frmgreen  |举报|字号 订阅

 
 

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实例的更多相关文章

  1. Delphi中TList类应用

    在DELPHI中指针最常见的就是和类TLIST结合起来使用.下面是一个很简单的例子,希望对这个例子的分析能让大家对使用TLIST类有一个简单的认识. 代码的功能是使用指针和Tlist来生成一个牌串,并 ...

  2. Delphi中线程类TThread实现多线程编程2---事件、临界区、Synchronize、WaitFor……

    接着上文介绍TThread. 现在开始说明 Synchronize和WaitFor 但是在介绍这两个函数之前,需要先介绍另外两个线程同步技术:事件和临界区 事件(Event) 事件(Event)与De ...

  3. Delphi中解析Xml的控件-SimDesign NativeXml

    Delphi中解析Xml的控件-SimDesign NativeXml 正在学习,感觉应用很方便.无源代码的版本还是免费的. SimDesign.NativeXml是一个delphi和bcb的XML控 ...

  4. 转发 Delphi中线程类TThread 实现多线程编程

    Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchr ...

  5. 转:Delphi中使用比较少的一些语法

    http://www.cnblogs.com/Murphieston/p/5577836.html 本文是为了加强记忆而写,这里写的大多数内容都是在编程的日常工作中使用频率不高的东西,但是又十分重要. ...

  6. Delphi中的线程类 - TThread详解

    Delphi中的线程类 - TThread详解 2011年06月27日 星期一 20:28 Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本 ...

  7. Delphi中的线程类(转)

    Delphi中的线程类 (转) Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对 TThread类的几个成员作一简单介绍,再说明一下 ...

  8. Delphi中使用比较少的一些语法

    本文是为了加强记忆而写,这里写的大多数内容都是在编程的日常工作中使用频率不高的东西,但是又十分重要. ---Murphy 1,构造和析构函数: a,构造函数: 一般基于TComponent组件的派生类 ...

  9. Delphi中的接口和抽象类

    参考:http://blog.csdn.net/xinzheng_wang/article/details/6058643 接口:Interface Delphi中接口中的关键字Interface,但 ...

随机推荐

  1. linux7 配置mysql5.7字符集编码

    linux 安装后 mysql5.7 字符集默认是拉丁,不能存储中文,修改步骤如下: 在 vim /etc/mysql/my.cnf   修改配置文件 在[mysqld] 下添加如下配置 charac ...

  2. jsp自定义标签处理转义字符

    sun公司提供的jstl虽然比较强大,但是开发中很难满足我们所有的需求,并且开发也禁止在jsp中写很多java代码,因此很多场景需要自己定义标签进行项目开发 sun提供的标签库引用方式:<%@t ...

  3. HDU 6617 Enveloping Convex(凸包+半平面交+二分)

    首先对于这m个点维护出一个凸包M,那么问题就变成了判断凸包P进行放大缩小能不能包含凸包M.(凸包P可以进行中心对称变换再进行放大缩小,见题意) 如何判断合适的相似比呢,我们可以用二分去放大缩小凸包P的 ...

  4. 搜索(BFS)---计算在网格中从原点到特定点的最短路径长度

    计算在网格中从原点到特定点的最短路径长度 [[1,1,0,1], [1,0,1,0], [1,1,1,1], [1,0,1,1]] 题目描述: 1表示可以经过某个地方,求解从(0,0)位置到(tr,t ...

  5. C# 模拟页面登录

    using System; using System.Collections; using System.Collections.Generic; using System.IO; using Sys ...

  6. 【学习】004 java并发包

    并发包[jdk1.7] 同步容器类 Vector与ArrayList区别 1.ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不 ...

  7. 随笔2 AbstractMap<K,V>

    上一篇写了Map接口的源码分析,这一篇写一下Map接口的一个实现类AbstractMap,从名字就可以看出这是一个抽象类,提供了Map接口的骨架实现,为我们实现Map接口的时候提供了很大的便利.在这里 ...

  8. 【串线篇】spring boot全面接管springMvc

    一.Spring MVC auto-configuration Spring Boot 自动配置好了SpringMVC 以下是SpringBoot对SpringMVC的默认配置:(WebMvcAutoC ...

  9. 插头$DP$学习小结

    插头\(DP\)学习小结 这种辣鸡毒瘤东西也能叫算法... 很优秀的一个算法. 最基本的适用范围主要是数据范围极小的网格图路径计数问题. 如果是像\(Noi2018\)那种的话建议考生在其他两道题难度 ...

  10. php io

    1.获取目录下文件,不包括子目录 //获取某目录下所有文件.目录名(不包括子目录下文件.目录名) $handler = opendir($dir); while (($filename = readd ...