Trageți un buton în Delphi - Deplasați-vă în rusă

Există două opțiuni. Ori face manual cu ajutorul unor evenimente mouse-ul pentru a în timp ce țineți apăsat butonul stâng al mouse-ului pe butonul forma, urmat de cursor, fie utilizați funcțiile standard.






O modalitate simplă este de a folosi evenimentul de mișcare a mouse-ului. Descriim dragul variabilei booleene. Când este setat evenimentul OnMouseDown, trageți: = true; am rezolvat mișcarea. În cazul în care handler onmousemove atribui coordonate coordonatele butonul mouse-ului, la fel cum a fost făcut în timer-ul, dar cu condiția dacă trageți apoi acțiunile noastre []. Și, în final, cu evenimentul OnMouseUp, resetați variabila - drag: = false.
Cod exemplu:

O altă metodă este: butoanele DragMode proprietate atribuie dmAutomatic (butonul este mutat automat), și a proprietății DragKind - dkDock (butonul va fi unit cu alte obiecte, după cum am înțeles). Mai departe. Unele componente, în special cu spațiu mare de lucru și goale (forma, panoul, toate tipurile de bare), acolo DockSite proprietate - să se așeze pe componenta buton, această proprietate ar trebui să fie setat la true. Adevărat, butonul ar putea ajunge accidental în sine, nu este andocat, deci ar trebui să fie atent (ea va fi poziția și butonul de închidere, de exemplu, utilizatorul poate distruge accidental). Dar este convenabil. Apropo, există alte evenimente: OnDragDrop, OnDragOver, OnStartDock, OnStartDrag, OnEndDock, OnEndDrag. Sper că poți să-i rezolvi singur, dacă este necesar.







răspuns dat 5 Oct '11 la 15:18

Și care este problema?)

Pentru a gestiona evenimentul, atunci când am stors butonul mouse-ului, cum ar fi MouseDown) Ei bine, de exemplu, există o variabilă de tip boolean Down, atribuiți adevărat. Apoi, procesăm evenimentul pe formular atunci când mutăm cursorul mouse-ului, MouseMove. Aici scriem ceva de genul:

unde X, Y - coordonatele curente ale mouse-ului;

Dacă poziția butonului este setată prin tipul de locație TPoint, respectiv modificați-le.

Mai departe, de exemplu, dacă am ajuns la o poziție în X și Y, atunci sunăm la butonul1.

Ei bine, cred că logica este clară, nu am nevoie de Delphi acum, deci nu pot aduce codul complet.







Articole similare

Trimiteți-le prietenilor: