home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161b.iso / handson / archive / Issue150 / delphi / Move2 / MoveUnit2.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1998-12-24  |  1.7 KB  |  81 lines

  1. unit MoveUnit2;
  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.     procedure FormCreate(Sender: TObject);
  16.     procedure AButtonMouseDown(Sender: TObject; Button: TMouseButton;
  17.       Shift: TShiftState; X, Y: Integer);
  18.     procedure AButtonMouseMove(Sender: TObject; Shift: TShiftState; X,
  19.       Y: Integer);
  20.     procedure AButtonClick(Sender: TObject);
  21.   private
  22.     { Private declarations }
  23.   public
  24.     { Public declarations }
  25.     Xdiff  : integer;
  26.     Ydiff  : integer;
  27.     LeftBtnClicked : boolean;
  28.     Moving : boolean;
  29.   end;
  30.  
  31. var
  32.   Form1: TForm1;
  33.  
  34. implementation
  35.  
  36. {$R *.DFM}
  37.  
  38.  
  39.  
  40. procedure TForm1.FormCreate(Sender: TObject);
  41. begin
  42.   Moving := false;
  43.   LeftBtnClicked := false;
  44. end;
  45.  
  46. procedure TForm1.AButtonMouseDown(Sender: TObject; Button: TMouseButton;
  47.   Shift: TShiftState; X, Y: Integer);
  48. begin
  49.   if Button = mbLeft then
  50.   begin
  51.      LeftBtnClicked := true;
  52.      Xdiff := X;
  53.      Ydiff := Y;
  54.   end;
  55. end;
  56.  
  57. procedure TForm1.AButtonMouseMove(Sender: TObject; Shift: TShiftState; X,
  58.   Y: Integer);
  59. var
  60.   btn : TButton;
  61. begin
  62.   btn := TButton(Sender);
  63.   Caption := btn.name + ' X:' + IntToStr(X) + ' Y:' + IntToStr(Y);
  64.   if LeftBtnClicked then
  65.   begin
  66.     Moving := true;
  67.     btn.Top := btn.Top + Y - Ydiff;
  68.     btn.Left := btn.Left + X - Xdiff;
  69.   end;
  70. end;
  71.  
  72. procedure TForm1.AButtonClick(Sender: TObject);
  73. begin
  74.   if Not Moving then
  75.      ShowMessage( 'You clicked: ' + TButton(Sender).name );
  76.   Moving := false;
  77.   LeftBtnClicked := false;
  78. end;
  79.  
  80. end.
  81.