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

Delphi控件源码

开发平台:

Delphi

  1. unit Child;
  2. interface
  3. uses Windows, Classes, Graphics, Forms, Controls, Menus,
  4.   Dialogs, SysUtils;
  5. type
  6.   TCircleChildForm = class(TForm)
  7.     MainMenu1: TMainMenu;
  8.     Circle1: TMenuItem;
  9.     FillColor1: TMenuItem;
  10.     BorderColor1: TMenuItem;
  11.     BorderSize1: TMenuItem;
  12.     N1: TMenuItem;
  13.     GetPosition1: TMenuItem;
  14.     ColorDialog1: TColorDialog;
  15.     procedure FormCreate(Sender: TObject);
  16.     procedure FormPaint(Sender: TObject);
  17.     procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
  18.       Shift: TShiftState; X, Y: Integer);
  19.     procedure FillColor1Click(Sender: TObject);
  20.     procedure BorderColor1Click(Sender: TObject);
  21.     procedure BorderSize1Click(Sender: TObject);
  22.     procedure GetPosition1Click(Sender: TObject);
  23.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  24.   private
  25.     { Private declarations }
  26.     XCenter, YCenter: Integer;
  27.     BorderSize: Integer;
  28.     BorderColor, FillColor: TColor;
  29.   public
  30.     { Public declarations }
  31.   end;
  32. implementation
  33. {$R *.DFM}
  34. procedure TCircleChildForm.FormCreate(Sender: TObject);
  35. begin
  36.   XCenter := - 200;
  37.   YCenter := - 200;
  38.   BorderSize := 1;
  39.   BorderColor := clBlack;
  40.   FillColor := clYellow;
  41. end;
  42. procedure TCircleChildForm.FormPaint(Sender: TObject);
  43. begin
  44.   Canvas.Pen.Width := BorderSize;
  45.   Canvas.Pen.Color := BorderColor;
  46.   Canvas.Brush.Color := FillColor;
  47.   Canvas.Ellipse (XCenter-30, YCenter-30, XCenter+30, YCenter+30);
  48. end;
  49. procedure TCircleChildForm.FormMouseDown(Sender: TObject; Button: TMouseButton;
  50.   Shift: TShiftState; X, Y: Integer);
  51. begin
  52.   XCenter := X;
  53.   YCenter := Y;
  54.   Refresh;
  55. end;
  56. procedure TCircleChildForm.FillColor1Click(Sender: TObject);
  57. begin
  58.   ColorDialog1.Color := FillColor;
  59.   if ColorDialog1.Execute then
  60.     begin
  61.       FillColor := ColorDialog1.Color;
  62.       Repaint;
  63.     end;
  64. end;
  65. procedure TCircleChildForm.BorderColor1Click(Sender: TObject);
  66. begin
  67.   ColorDialog1.Color := BorderColor;
  68.   if ColorDialog1.Execute then
  69.     begin
  70.       BorderColor := ColorDialog1.Color;
  71.       Repaint;
  72.     end;
  73. end;
  74. procedure TCircleChildForm.BorderSize1Click(Sender: TObject);
  75. var
  76.   InputString: string;
  77. begin
  78.   InputString := IntToStr (BorderSize);
  79.   if InputQuery ('Border', 'Insert width', InputString) then
  80.     begin
  81.       BorderSize := StrToIntDef (InputString, BorderSize);
  82.       Repaint;
  83.     end;
  84. end;
  85. procedure TCircleChildForm.GetPosition1Click(Sender: TObject);
  86. begin
  87.   MessageDlg ('The center of the circle is in the position (' +
  88.     IntToStr (XCenter) + ', ' + IntToStr (YCenter) + ').',
  89.     mtInformation, [mbOk], 0);
  90. end;
  91. procedure TCircleChildForm.FormClose(Sender: TObject;
  92.   var Action: TCloseAction);
  93. begin
  94.   Action := caFree;
  95. end;
  96. end.