A „trage și arunca” înseamnă a ține apăsat butonul mouse computer butonul pe măsură ce mouse-ul este mutat și apoi eliberați butonul pentru a arunca obiectul. Delphi ușurează programarea de glisare și plasare în aplicații.
Puteți trage și plasa cu adevărat din / către oriunde doriți, cum ar fi de la un formular la altul sau de la Windows Explorer la aplicația dvs.
Exemplu de glisare și picătură
Porniți un proiect nou și puneți un control de imagine pe un formular. Utilizați Object Inspector pentru a încărca o imagine (Picture Picture) și apoi setați DragMode proprietatea la dmManual. Vom crea un program care să permită mutarea unui timp de control TImage folosind tehnica drag and drop.
DragMode
Componentele permit două tipuri de glisare: automată și manuală. Delphi folosește proprietatea DragMode pentru a controla atunci când utilizatorul este capabil să tragă controlul. Valoarea implicită a acestei proprietăți este dmManual, ceea ce înseamnă că glisarea componentelor în jurul aplicarea nu este permisă, decât în condiții speciale, pentru care trebuie să scriem cod adecvat. Indiferent de setarea pentru proprietatea DragMode, componenta se va muta numai dacă este scris codul corect pentru a-l repoziționa.
OnDragDrop
Evenimentul care recunoaște glisarea și abandonarea se numește eveniment OnDragDrop. O folosim pentru a specifica ce dorim să se întâmple atunci când utilizatorul aruncă un obiect. Prin urmare, dacă dorim să mutăm o componentă (imagine) într-o nouă locație pe un formular, trebuie să scriem codul pentru gestionatorul de evenimente OnDragDrop al formularului.
Parametrul sursă al evenimentului OnDragDrop este obiectul abandonat. Tipul parametrului sursă este TObject. Pentru a-i accesa proprietățile, trebuie să-l aruncăm la tipul corect de componente, care în acest exemplu este TImage.
Accept
Trebuie să folosim evenimentul OnDragOver al formularului pentru a semnala că formularul poate accepta controlul TImage pe care dorim să îl aruncăm. Deși Acceptul parametru implicit pe True, dacă nu este furnizat un handler de eveniment OnDragOver, controlul respinge obiectul târât (ca și cum parametrul Accept a fost schimbat în False).
Rulați proiectul și încercați să trageți și să picurați imaginea. Observați că imaginea rămâne vizibilă în locația sa originală în timp ce trageți indicatorul mouse-ului se mișcă. Nu putem folosi procedura OnDragDrop pentru a face ca componenta să fie invizibilă în timp ce glisarea are loc, deoarece această procedură este apelată numai după ce utilizatorul renunță la obiect (dacă este deloc).
DragCursor
Dacă doriți să schimbați imaginea cursorului prezentată la tragerea controlului, utilizați proprietatea DragCursor. Valorile posibile pentru proprietatea DragCursor sunt aceleași cu cele pentru proprietatea Cursor. Puteți utiliza cursoare animate sau orice doriți, cum ar fi un fișier imagine BMP sau un fișier cursor CUR.
BeginDrag
Dacă DragMode este dmAutomatic, glisarea începe automat când apăsăm un buton de mouse cu cursorul de pe control. Dacă ați lăsat valoarea proprietății DragMode a TImage la valoarea implicită a lui dmManual, trebuie să utilizați metodele BeginDrag / EndDrag pentru a permite glisarea componentei. Un mod mai obișnuit de a trage și arunca este de a seta DragMode pe dmManual și de a începe glisarea manipulând evenimente cu mouse-down.
Acum, vom folosi Ctrl + MouseDown combinație de tastatură pentru a permite glisarea să aibă loc. A stabilit TImage's DragMode înapoi la dmManual și scrie astfel HandDown Handler eveniment:
BeginDrag ia un parametru boolean. Dacă trecem True (ca în acest cod), glisarea începe imediat; dacă este fals, nu începe până nu mutăm mouse-ul la mică distanță. Nu uitați că necesită tasta Ctrl.