home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161b.iso / handson / archive / Issue150 / delphi / copydlph.exe / MoveAlign / MvAlUnit.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1998-12-26  |  3.2 KB  |  133 lines

  1. unit MvAlUnit;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   StdCtrls, Menus;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Button1: TButton;
  12.     Button2: TButton;
  13.     Button3: TButton;
  14.     Button4: TButton;
  15.     PopupMenu1: TPopupMenu;
  16.     AlignLeft1: TMenuItem;
  17.     AlignTop1: TMenuItem;
  18.     AlignRight1: TMenuItem;
  19.     AlignBottom1: TMenuItem;
  20.     procedure FormCreate(Sender: TObject);
  21.     procedure AButtonMouseDown(Sender: TObject; Button: TMouseButton;
  22.       Shift: TShiftState; X, Y: Integer);
  23.     procedure AButtonMouseMove(Sender: TObject; Shift: TShiftState; X,
  24.       Y: Integer);
  25.     procedure AButtonClick(Sender: TObject);
  26.     procedure AlignLeft1Click(Sender: TObject);
  27.     procedure AlignTop1Click(Sender: TObject);
  28.     procedure AlignRight1Click(Sender: TObject);
  29.     procedure AlignBottom1Click(Sender: TObject);
  30.   private
  31.     { Private declarations }
  32.   public
  33.     { Public declarations }
  34.     Xdiff  : integer;
  35.     Ydiff  : integer;
  36.     LeftBtnClicked : boolean;
  37.     Moving : boolean;
  38.     TriggerBtn : TButton;
  39.   end;
  40.  
  41. var
  42.   Form1: TForm1;
  43.  
  44. implementation
  45.  
  46. {$R *.DFM}
  47.  
  48.  
  49.  
  50. procedure TForm1.FormCreate(Sender: TObject);
  51. begin
  52.   Moving := false;
  53.   LeftBtnClicked := false;
  54.   TriggerBtn := Button1; 
  55. end;
  56.  
  57. procedure TForm1.AButtonMouseDown(Sender: TObject; Button: TMouseButton;
  58.   Shift: TShiftState; X, Y: Integer);
  59. begin
  60.   if Button = mbLeft then
  61.   begin
  62.      LeftBtnClicked := true;
  63.      Xdiff := X;
  64.      Ydiff := Y;
  65.   end
  66.   else TriggerBtn := TButton(Sender);
  67. end;
  68.  
  69. procedure TForm1.AButtonMouseMove(Sender: TObject; Shift: TShiftState; X,
  70.   Y: Integer);
  71. var
  72.   btn : TButton;
  73. begin
  74.   btn := TButton(Sender);
  75.   Caption := btn.name + ' X:' + IntToStr(X) + ' Y:' + IntToStr(Y);
  76.   if LeftBtnClicked then
  77.   begin
  78.     Moving := true;
  79.     btn.Top := btn.Top + Y - Ydiff;
  80.     btn.Left := btn.Left + X - Xdiff;
  81.   end;
  82. end;
  83.  
  84. procedure TForm1.AButtonClick(Sender: TObject);
  85. begin
  86.   if Not Moving then
  87.      ShowMessage( 'You clicked: ' + TButton(Sender).name );
  88.   Moving := false;
  89.   LeftBtnClicked := false;
  90. end;
  91.  
  92. procedure TForm1.AlignLeft1Click(Sender: TObject);
  93. var
  94.   i : integer;
  95. begin
  96.  for i := 0 to ComponentCount - 1 do
  97.     if Components[i] is TButton then
  98.        TButton(Components[i]).Left := TriggerBtn.Left;    
  99. end;
  100.  
  101. procedure TForm1.AlignTop1Click(Sender: TObject);
  102. var
  103.   i : integer;
  104. begin
  105.  for i := 0 to ComponentCount - 1 do
  106.     if Components[i] is TButton then
  107.            TButton(Components[i]).Top := TriggerBtn.Top;
  108. end;
  109.  
  110. procedure TForm1.AlignRight1Click(Sender: TObject);
  111. var
  112.   i : integer;
  113.   RightEdge : integer;
  114. begin
  115.  RightEdge := (TriggerBtn.Left + TriggerBtn.Width);
  116.  for i := 0 to ComponentCount - 1 do
  117.     if Components[i] is TButton then
  118.        TButton(Components[i]).Left := RightEdge - TButton(Components[i]).Width;
  119. end;
  120.  
  121. procedure TForm1.AlignBottom1Click(Sender: TObject);
  122. var
  123.   i : integer;
  124.   BottomEdge : integer;
  125. begin
  126.  BottomEdge := (TriggerBtn.Top + TriggerBtn.Height);
  127.  for i := 0 to ComponentCount - 1 do
  128.     if Components[i] is TButton then
  129.        TButton(Components[i]).Top := BottomEdge - TButton(Components[i]).Height;
  130. end;
  131.  
  132. end.
  133.