"Vuci i ispusti" je da zadržite kompjuterski miš tipku dok se miš pomiče, a zatim otpustite gumb za ispuštanje objekta. Delphi olakšava programiranje povlačenja i ispuštanja u aplikacije.
Stvarno možete povući i ispustiti gdje god želite, poput jednog obrasca u drugi ili iz programa Windows Explorer u svoju aplikaciju.
Primjer povlačenja i ispuštanja
Pokrenite novi projekt i na obrazac stavite jednu kontrolu slike. Koristite Object Inspector za učitavanje slike (Svojstvo slike), a zatim postavite DragMode vlasništvo dmManual. Napravit ćemo program koji će omogućiti pomicanje vremena izvođenja TImage kontrole pomoću tehnika povlačenja i ispuštanja.
DragMode
Dijelovi omogućuju dvije vrste povlačenja: automatsko i ručno. Delphi koristi svojstvo DragMode da bi kontrolirao kada korisnik može povući kontrolu. Zadana vrijednost ovog svojstva je dmManual, što znači da povlačite komponente oko prijava nije dopuštena, osim u posebnim okolnostima, za koje moramo napisati odgovarajući kod. Bez obzira na postavku svojstva DragMode, komponenta će se premjestiti samo ako je ispravan kôd napisan kako bi je promijenio.
OnDragDrop
Događaj koji prepoznaje povlačenje i ispadanje zove se događaj OnDragDrop. Koristimo ga za određivanje onoga što želimo dogoditi kad korisnik ispusti neki objekt. Stoga, ako želimo premjestiti komponentu (sliku) na novo mjesto na obrascu, moramo napisati kôd za obrađivač događaja OnDragDrop događaja.
Izvorni parametar događaja OnDragDrop je objekt koji se ispada. Vrsta izvornog parametra je TObject. Da bismo pristupili njegovim svojstvima, moramo ga baciti na odgovarajući tip komponente, što je u ovom primjeru TImage.
Prihvatiti
Moramo koristiti događaj OnDragOver forme da bismo signalizirali da obrazac može prihvatiti TImage kontrolu na koju želimo ubaciti. Iako Prihvati parametar tvornički je postavljeno na True, ako nije dostavljen program za upravljanje onDragOver događajem, kontrola odbija povučeni objekt (kao da je parametar Accept promijenjen u False).
Pokrenite svoj projekt i pokušajte povući i ispustiti sliku. Primijetite da slika ostaje vidljiva na izvornom mjestu tijekom povlačenja pokazivač miša se pomiče. Ne možemo koristiti postupak OnDragDrop da komponenta bude nevidljiva dok se povlačenje vrši jer se taj postupak poziva tek nakon što korisnik ispusti objekt (ako ga uopće ima).
DragCursor
Ako želite promijeniti sliku pokazivača prikazanu prilikom povlačenja kontrole, koristite svojstvo DragCursor. Moguće vrijednosti za svojstvo DragCursor iste su kao i za svojstvo Cursor. Možete koristiti animirane kursore ili sve što želite, poput BMP slikovne datoteke ili CUR datoteke kursora.
BeginDrag
Ako je DragMode dmAutomatic, povlačenje započinje automatski kad pritisnemo tipku miša sa pokazivačem na upravljačkoj jedinici. Ako ste vrijednost svojstva DragMode TImage ostavili na zadanom dmManual, morate koristiti metode BeginDrag / EndDrag da biste omogućili povlačenje komponente. Češći način povlačenja i ispuštanja je postavljanje DragMode na dmManual i pokretanje povlačenja rukovanjem događajima spuštanjem miša.
Sad ćemo se poslužiti Ctrl + mousedown kombinacija tipkovnice kako bi se omogućilo povlačenje. set TImagevratite DragMode na dmManual i napišite MouseDown obradnik događaja ovako:
BeginDrag uzima booleov parametar. Ako prođemo True (kao u ovom kodu), povlačenje započinje odmah; ako je lažno, ne pokreće se dok ne pomaknemo miš na malu udaljenost. Imajte na umu da je potreban tipka Ctrl.