ListForm.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:2k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit ListForm;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   StdCtrls, Contnrs;
  6. type
  7.   TForm1 = class(TForm)
  8.     ButtonAdd: TButton;
  9.     ButtonList: TButton;
  10.     ListBox1: TListBox;
  11.     ButtonWrong: TButton;
  12.     btnListStack: TButton;
  13.     btnQueue: TButton;
  14.     procedure ButtonAddClick(Sender: TObject);
  15.     procedure ButtonListClick(Sender: TObject);
  16.     procedure FormCreate(Sender: TObject);
  17.     procedure ButtonWrongClick(Sender: TObject);
  18.     procedure FormDestroy(Sender: TObject);
  19.     procedure btnListStackClick(Sender: TObject);
  20.     procedure btnQueueClick(Sender: TObject);
  21.   private
  22.     ListDate: TObjectList;
  23.     Stack: TStack;
  24.     Queue: TQueue;
  25.   public
  26.     { Public declarations }
  27.   end;
  28. var
  29.   Form1: TForm1;
  30. implementation
  31. {$R *.DFM}
  32. uses
  33.   Dates;
  34. procedure TForm1.ButtonAddClick(Sender: TObject);
  35. begin
  36.   ListDate.Add (TDate.Create (
  37.     1900 + Random (200), 1 + Random (12), 1 + Random (30)));
  38. end;
  39. procedure TForm1.ButtonListClick(Sender: TObject);
  40. var
  41.   I: Integer;
  42. begin
  43.   ListBox1.Clear;
  44.   for I := 0 to ListDate.Count - 1 do
  45.     Listbox1.Items.Add ((TObject(ListDate [I]) as TDate).Text);
  46. end;
  47. procedure TForm1.FormCreate(Sender: TObject);
  48. var
  49.   I: Integer;
  50. begin
  51.   Randomize;
  52.   ListDate := TObjectList.Create (True);
  53.   Stack := TStack.Create;
  54.   Queue := TQueue.Create;
  55.   for I := 1 to 10 do
  56.   begin
  57.     Stack.Push (Pointer (I));
  58.     Queue.Push (Pointer (I));
  59.   end;
  60. end;
  61. procedure TForm1.ButtonWrongClick(Sender: TObject);
  62. begin
  63.   // add a button to the list
  64.   ListDate.Add (Sender);
  65. end;
  66. procedure TForm1.FormDestroy(Sender: TObject);
  67. begin
  68.   ListDate.Free;
  69.   Stack.Free;
  70.   Queue.Free;
  71. end;
  72. procedure TForm1.btnListStackClick(Sender: TObject);
  73. var
  74.   Stack2: TStack;
  75. begin
  76.   Stack2 := TStack.Create;
  77.   ListBox1.Clear;
  78.   // lists removing
  79.   while Stack.Count > 0 do
  80.   begin
  81.     ListBox1.Items.Add (IntToStr (Integer (Stack.Peek)));
  82.     Stack2.Push (Stack.Pop);
  83.   end;
  84.   // restores
  85.   while Stack2.Count > 0 do
  86.     Stack.Push (Stack2.Pop);
  87.   ShowMessage ('Removed: ' + IntToStr (Integer (Stack.Pop)));
  88. end;
  89. procedure TForm1.btnQueueClick(Sender: TObject);
  90. var
  91.   I: Integer;
  92. begin
  93.   ListBox1.Clear;
  94.   for I := 0 to Queue.Count - 1 do
  95.   begin
  96.     ListBox1.Items.Add (IntToStr (Integer (Queue.Peek)));
  97.     Queue.Push (Queue.Pop);
  98.   end;
  99.   ShowMessage ('Removed: ' + IntToStr (Integer (Queue.Pop)));
  100. end;
  101. end.