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

Delphi控件源码

开发平台:

Delphi

  1. unit Child2;
  2. interface
  3. uses
  4.   Windows, Classes, Graphics, Forms,
  5.   Controls, Menus, Dialogs, StdCtrls, ExtCtrls,
  6.   SysUtils;
  7. type
  8.   Directions = (up_right, down_right, down_left, up_left);
  9.   TBounceChildForm = class(TForm)
  10.     Timer1: TTimer;
  11.     Shape1: TShape;
  12.     MainMenu1: TMainMenu;
  13.     Square1: TMenuItem;
  14.     FillColor1: TMenuItem;
  15.     N1: TMenuItem;
  16.     GetPosition1: TMenuItem;
  17.     Movement1: TMenuItem;
  18.     Start1: TMenuItem;
  19.     Stop1: TMenuItem;
  20.     ColorDialog1: TColorDialog;
  21.     procedure Timer1Timer(Sender: TObject);
  22.     procedure FillColor1Click(Sender: TObject);
  23.     procedure FormCreate(Sender: TObject);
  24.     procedure GetPosition1Click(Sender: TObject);
  25.     procedure Start1Click(Sender: TObject);
  26.     procedure Stop1Click(Sender: TObject);
  27.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  28.   private
  29.     { Private declarations }
  30.     Dir : Directions;
  31.   public
  32.     { Public declarations }
  33.   end;
  34. implementation
  35. {$R *.DFM}
  36. procedure TBounceChildForm.Timer1Timer(Sender: TObject);
  37. begin
  38.   case Dir of
  39.     up_right:
  40.     begin
  41.       Shape1.Left := Shape1.Left + 3;
  42.       Shape1.Top := Shape1.Top - 3;
  43.       if Shape1.Top <= 0 then
  44.         Dir := down_right;
  45.       if Shape1.Left + Shape1.Width >= ClientWidth then
  46.         Dir := up_left;
  47.     end;
  48.     down_right:
  49.     begin
  50.       Shape1.Left := Shape1.Left + 3;
  51.       Shape1.Top := Shape1.Top + 3;
  52.       if Shape1.Top + Shape1.Height >= ClientHeight then
  53.         Dir := up_right;
  54.       if Shape1.Left + Shape1.Width >= ClientWidth then
  55.         Dir := down_left;
  56.     end;
  57.     down_left:
  58.     begin
  59.       Shape1.Left := Shape1.Left - 3;
  60.       Shape1.Top := Shape1.Top + 3;
  61.       if Shape1.Top + Shape1.Height >= ClientHeight then
  62.         Dir := up_left;
  63.       if Shape1.Left <= 0 then
  64.         Dir := down_right;
  65.     end;
  66.     up_left:
  67.     begin
  68.       Shape1.Left := Shape1.Left - 3;
  69.       Shape1.Top := Shape1.Top - 3;
  70.       if Shape1.Top <= 0 then
  71.         Dir := down_left;
  72.       if Shape1.Left <= 0 then
  73.         Dir := up_right;
  74.     end;
  75.   end;
  76. end;
  77. procedure TBounceChildForm.FillColor1Click(Sender: TObject);
  78. begin
  79.   if ColorDialog1.Execute then
  80.     Shape1.Brush.Color := ColorDialog1.Color;
  81. end;
  82. procedure TBounceChildForm.FormCreate(Sender: TObject);
  83. begin
  84.   ColorDialog1.Color := Shape1.Brush.Color;
  85.   Dir := down_left;
  86. end;
  87. procedure TBounceChildForm.GetPosition1Click(Sender: TObject);
  88. begin
  89.   MessageDlg ('The top-left corner of the square was in the position (' +
  90.     IntToStr (Shape1.Left) + ', ' + IntToStr (Shape1.Top) + ').',
  91.     mtInformation, [mbOk], 0);
  92. end;
  93. procedure TBounceChildForm.Start1Click(Sender: TObject);
  94. begin
  95.   Timer1.Enabled := True;
  96.   Start1.Enabled := False;
  97.   Stop1.Enabled := True;
  98. end;
  99. procedure TBounceChildForm.Stop1Click(Sender: TObject);
  100. begin
  101.   Timer1.Enabled := False;
  102.   Start1.Enabled := True;
  103.   Stop1.Enabled := False;
  104. end;
  105. procedure TBounceChildForm.FormClose(Sender: TObject;
  106.   var Action: TCloseAction);
  107. begin
  108.   Action := caFree;
  109. end;
  110. end.