interfață de transfer de drag-and-drop

Delphi. Sintaxa. Drag and Drop

Interfață de transfer Drag-and-drop

interfață de transfer și componentele care primesc a apărut destul de mult timp. Acesta oferă o interacțiune două controale în timpul executării cererii. Acest lucru se poate efectua orice operațiuni necesare. În ciuda simplității de implementare și dezvoltare a limitărilor, mulți programatori (în special începători) ia în considerare acest mecanism obscur și exotice. Cu toate acestea, utilizarea Drag-and-drop poate fi un foarte util și ușor de implementat. Acum trebuie să vedem acest lucru.

Pentru ca mecanismul de lucru, pe care doriți să se adapteze în consecință două controale. Unul ar trebui să fie o sursă (sursă), al doilea - un receptor (țintă). Sursa nu se va muta, dar numai înregistrată ca atare în mecanismul.

Notă:
Un element de control poate fi atât sursa și receptor.

Utilizatorul plasează cursorul mouse-ului peste un control, apasă butonul stâng al mouse-ului și, fără a elibera aceasta, începe să se miște cursorul la al doilea element. Atunci când acest element al utilizatorului eliberează butonul mouse-ului. În acest moment, se face în conformitate cu dezvoltatorul acțiunii. În care primul element de control este o sursă, iar al doilea - receptor.

După cum puteți vedea, vă puteți gândi la multe aplicații mecanism drag-and-drop. Flexibilitatea acestuia se datorează faptului că acesta este doar un mijloc de a lega cele două componente cu cursorul mouse-ului. Un conținut specific depinde numai de imaginația programator și sarcini.

Întregul mecanism de Drag-and-drop este implementat în clasa de bază TCONTROL, care este părintele tuturor controalelor. Luați în considerare esența mecanismului.

Orice dispozitiv de control al componentelor palete Delphi este sursa mecanismului de drag-and-drop. Comportamentul său în faza inițială a transferului depinde de proprietățile

Înțeles componentă dmAutomatic oferă răspuns automat la apăsarea butonului din stânga al mouse-ului și trăgând de sus - în cazul în care acest mecanism este comutată în mod independent.

Înțeles dmManual (implicit) cere dezvoltatorului să se asigure că mecanismul manual. Acest mod este utilizat atunci când componenta este de a răspunde la apăsarea butonului stâng al mouse-ului în alt mod. Pentru a inițializa este utilizată metoda de transfer

Parametru imediat = True prevede mecanism de pornire instantanee. Dacă valoarea este mecanismul de fals este activată numai atunci când cursorul este deplasat pe distanța determinată parametrului de prag.

La includerea unui mecanism de semnale mouse-ul - se transformă într-un cursor într-o anumită proprietate

Din nou, sursa atunci când se deplasează cursorul nu se schimba propria sa poziție, și numai în caz de finalizarea cu succes a transferului va fi capabil de a interacționa cu receptorul.

Receptorul poate fi orice component în care este creată metoda de tratare a

Este invocat atunci când deplasați cursorul în modul Drag-and-drop pe această componentă. In handler metoda poate fi furnizată prin selectarea surselor de transfer de atribute dorite.

Dacă opțiunea este setată la Acceptare la True, această componentă devine un receptor. Sursa de transfer Sursa determinat parametru. Cu această opțiune câștigurile dezvoltator acces la proprietățile și metodele sursei. Poziția actuală a cursorului seta parametrii X și Y. Parametrul de stat returnează informații despre mișcarea mouse-ului:

dsDragEnter - indicatorul apare deasupra componentei; dsDragLeave - pointer component stânga; dsDragMove - acul indicatorului se pe componenta.

Receptorul trebuie să includă efectuarea unor acțiuni în cazul în care a finaliza transferul de putere pe ea. Pentru a face acest lucru, metoda de tratare a utilizat

care este cauzat atunci când eliberați butonul din stânga al mouse-ului pe un receptor componente. Accesul la sursă și receptor pentru a furniza parametrii sursă și, respectiv Expeditor. mouse-ul coordonatele X parametrii de retur și Y.

La finalizarea transferului controlului - putere - primește un mesaj care este procesat de

Sursă și receptor Parametrii determinat Sender și Target respectiv. mouse-ul coordonatele determinate de parametrii X și Y.

Metoda sursă EndDrag poate fi folosit pentru a programa un transfer de oprire (în timpul funcționării normale finalizarea de către utilizator nu este utilizat):

Parametrul Picătură = Adevărat finalizează transferul. Valoarea false anulează transferul.

Listarea 27.1. punerea în aplicare a secțiunii principale a proiectului forma DemoDragDrop a modulului

și apoi pe mecanismul de transfer. Deoarece DragMode proprietate pentru edit1 contează dmManual, atunci componenta fără probleme oferă un text de focalizare și editare.

Metoda EditiEndDrag asigură afișarea de informații cu privire la punerea în aplicare a transferului la sursa.

Metode handler Receptor definite pentru componenta Edit2. Metoda Edit2DragOver verifică clasa sursă și activează sau dezactivează recepția.

Metoda Edit2DragDrop efectuează transferul de text de la sursa la receptor.

Vă rugăm să rețineți că ambele componente tEditează sunt atât surse și destinații. În acest scop, fiecare dintre ele foloseste un diferite metode de handler. A metode sursă configurat să proceseze proprietarului ca o clasă de exemplu tEditează.

Forma, receptor Drag-and-drop, PANOU2 deplasează panoul care acționează ca o sursă. Metoda FormDragOver interzice toate componentele, cu excepția panourilor. Metoda FormDragDrop efectuează relocarea componentelor.

Panoul nu are metodele sale de handler, t. Pentru a. DmAutomatic funcționează în timp și nu necesită transferul suplimentar de prelucrare este completă.