zoukankan      html  css  js  c++  java
  • Delphi中Tlist实例

    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 lazarus opengl 网页操作自动化, 图像分析破解,游戏开发
  • 相关阅读:
    centos8 将SSSD配置为使用LDAP并要求TLS身份验证
    Centos8 搭建 kafka2.8 .net5 简单使用kafka
    .net core 3.1 ActionFilter 拦截器 偶然 OnActionExecuting 中HttpContext.Session.Id 为空字符串 的问题
    Springboot根据不同环境加载对应的配置
    VMware Workstation12 安装 Centos8.3
    .net core json配置文件小结
    springboot mybatisplus createtime和updatetime自动填充
    .net core autofac依赖注入简洁版
    .Net Core 使用 redis 存储 session
    .Net Core 接入 RocketMQ
  • 原文地址:https://www.cnblogs.com/delphi-xe5/p/5449433.html
Copyright © 2011-2022 走看看