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 网页操作自动化, 图像分析破解,游戏开发
  • 相关阅读:
    HDU2027 统计元音 一点点哈希思想
    湖南工业大学第一届ACM竞赛 数字游戏 字符串处理
    湖南工业大学第一届ACM竞赛 我素故我在 DFS
    HDU3293sort
    HDU2082 找单词 母函数
    HDU1018 Big Number 斯特林公式
    湖南工业大学第一届ACM竞赛 分糖果 位操作
    UVA 357 Let Me Count The Ways
    UVA 147 Dollars
    UVA 348 Optimal Array Multiplication Sequence
  • 原文地址:https://www.cnblogs.com/delphi-xe5/p/5449433.html
Copyright © 2011-2022 走看看