[Delphi] Ruch formy za myszką

0

jak zrobić aby forma (zalozmy 100x100) podazala po pulpicie za myszka...jezeli myszka bylaby na dole ekranu to forma powinna tak zminic miehsce by myszka nadal wskazywala jakies miejsce a forma automatycznie dopasowywala sie (w tym wypadku byla nad kursorem)

0

przytoczę kawałek z mojego programu FTP (projekt zarzucony, jak ktoś chce kontynuować to niech ładnie poprosi, może podeślę źródła) który ma za zadanie obsługę komponentu TPanel robiącago za pasek tytułowy:
[code]

var frmdragvar : boolean;
LastCurPos : TPoint;
...

procedure TfrmMain.TitleBarMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button=mbLeft then
begin
frmDragVar:=true;
GetCursorPos(LastCurpos);
end;
end;

procedure TfrmMain.TitleBarMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var curpos, p : tpoint;
begin
if frmdragvar then
begin
getcursorpos(curpos);
curpos:=curpos;
p.x:=lastcurpos.x-curpos.x;
p.y:=lastcurpos.y-curpos.y;
top:=top-p.y;
left:=left-p.x;
getcursorpos(lastcurpos);
end;
end;

procedure TfrmMain.TitleBarMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button=mbleft then
frmdragvar:=false;
end;

[/delphi]

0

W OnTimer Timera:

var
P: TPoint;
begin
GetCursorPos(P);
Form1.Left:=P.X + 2;
Form1.Top:=P.Y + 2
end;

0

W OnTimer Timera:

var
P: TPoint;
begin
GetCursorPos(P);
Form1.Left:=P.X + 2;
Form1.Top:=P.Y + 2
end;

do tego jeszcze sprawdzasz czy polozenie kursora na osi Y + wysokosc formy + okolo 5 px (dla estetyki) jest wieksza niz wysokosc ekranu. jesli tak to przemieszczasz forme nad kursor. Na tej samej zasadzie trzeba jeszcze zrobic z prawa, lewa i gorna krawedzia ekranu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1