przesuwanie formy przy chwyceniu za PaintBox

0

builder c++

na mojej formie jest tylko PaintBox na którym wyświetlają się różne informacje, teraz chciałbym chwycić myszką za tego pointboxa i żeby przy ruszaniu myszką (z wciśniętym lewym klawiszem) całe okienko zmieniało pozycję. Jest jakaś możliwość żeby to zrobić?

0

Mam rozwiązanie, które kiedyś napisałem dla własnych potrzeb, zamieściłem je kiedyś w FAQach, ale nie mogłem go teraz znaleźć. Aha kod jest w Delphi:

Jak zrobić, aby złapać za dowolne miejsce na formie
i przenieść całą formę w inne miejsce?

Deklarujemy zmienne:
var
  P : TPoint;   // współrzędne miejsca kliknięcia
                // (ale według Formy, a nie Pulpitu)


Stwórz Timer:
  Name= TRuch,
  Interval = 10, czym mniejsza wartość tym płynniej się będzie poruszać
  Enabled = False.

Ustaw zdarzenie OnTimer:

procedure TFomr1.TRuchTimer(Sender: TObject);
var P2 : TPoint;   // aktualna pozycja kursora
begin
  GetCursorPos(P2);         // bierze współrzędne kursora
  Form1.Left:=P2.X - P.X;   // ustawia formę w nowym miejscu
  Form1.Top :=P2.Y - P.Y;
end;


Ustaw zdarzenie OnMouseDown Formy:

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  If Button = mbLeft then  // może być też mbRight
  begin
    GetCursorPos(P);
    P.X:=P.X - Form1.Left;
    P.Y:=P.Y - Form1.Top;
    TRuch.Enabled:=true;
  end;
end;


Ustaw zdarzenie OnMouseUp Formy:

procedure TfOkno.FormMouseUp(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);
begin
  TRuch.Enabled:=false;
end;
0

Tu masz inne rozwiązanie:
http://4programmers.net/faq.php/id=461
również dla Delphi, ale nie powinno być problemów z przetłumaczeniem ;P

0

dzięki!

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