Fórum Trabalhar com diversas Classes #403161
15/06/2011
0
unit uMoverBotao;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;
type
TfrmMoverBotao = class(TForm)
btnSair: TBitBtn;
BitBtn1: TBitBtn;
procedure FormShow(Sender: TObject);
procedure btnSairClick(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
public
MouseDownSpot: TPoint;
Capturing: bool;
end;
var
frmMoverBotao: TfrmMoverBotao;
implementation
{$R *.dfm}
procedure TfrmMoverBotao.FormShow(Sender: TObject);
begin
ShowMessage('Mantenha a tecla <ctrl> Pressionada e mova o botão');
end;
procedure TfrmMoverBotao.btnSairClick(Sender: TObject);
begin
Self.Close;
end;
procedure TfrmMoverBotao.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if Capturing then
begin
BitBtn1.Left := BitBtn1.Left - (MouseDownSpot.x - x);
BitBtn1.Top := BitBtn1.Top - (MouseDownSpot.y - y);
end;
end;
procedure TfrmMoverBotao.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if ssCtrl in Shift then
begin
SetCapture(BitBtn1.Handle);
Capturing := True;
MouseDownSpot.X := x;
MouseDownSpot.Y := Y;
end;
end;
procedure TfrmMoverBotao.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Capturing then
begin
ReleaseCapture;
Capturing := False;
BitBtn1.Left := BitBtn1.Left - (MouseDownSpot.x - x);
BitBtn1.Top := BitBtn1.Top - (MouseDownSpot.y - y);
end;
end;
end.
Nigro
Curtir tópico
+ 0Posts
15/06/2011
Marco Salles
Gostei + 0
16/06/2011
Nigro
Gostei + 0
16/06/2011
Marco Salles
Algume mais podia testar
utilizo Vista
Gostei + 0
16/06/2011
Nigro
procedure Tfrm1.FormCreate(Sender: TObject); var iContador: Integer; begin for iContador := 0 to Self.ComponentCount - 1 do begin THackControl(Self.Components[iContador]).OnMouseDown := BitBtn1MouseDown; THackControl(Self.Components[iContador]).OnMouseUp := BitBtn1MouseUp; THackControl(Self.Components[iContador]).OnMouseMove := BitBtn1MouseMove; end; end;
Gostei + 0
05/05/2013
José
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)