Dicas de Delphi

1 - Como mostrar o mouse como uma ampulheta
2 - Como mover um componente em Run-time

1 - Como mostrar o mouse como uma ampulheta

try
Screen.Cursor := crHourGlass;

{ Escreva o ação a executar aqui }

finally
Screen.Cursor := crDefault;
end;
Application.ProcessMessages;

 

2 - Como mover um componente em Run-time

No exemplo abaixo deve ser incluído um componente Button. Para testar este exemplo mantenha a tecla CTRL pressionada clique com o mouse no componente Button. Feito isto, basta arrastar o componente Button para qualquer lado. type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure Button1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure Button1MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

private

{ Private declarations }

public

{ Public declarations }

MouseDownSpot : TPoint;

Capturing : bool;

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

// Evento OnMouseDown do Form

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

if ssCtrl in Shift then begin

SetCapture(Button1.Handle);

Capturing := true;

MouseDownSpot.X := x;

MouseDownSpot.Y := Y;

end;

end;

// Evento OnMouseMove do Form

procedure TForm1.Button1MouseMove(Sender:

TObject; Shift: TShiftState; X, Y: Integer);

begin

if Capturing then begin

Button1.Left:= Button1.Left-(MouseDownSpot.x-x);

Button1.Top:= Button1.Top - (MouseDownSpot.-y);

end;

end;

// Evento OnMouseUp do Form

procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

if Capturing then begin

ReleaseCapture;

Capturing := false;

Button1.Left := Button1.Left - (MouseDownSpot.x -x);

Button1.Top := Button1.Top - (MouseDownSpot.y - y);

end;

end;