A "húzza és vidd" elem alatt tartsa lenyomva a számítógépes egér gombot, amikor az egeret mozgatja, majd engedje el a gombot az objektum eldobásához. A Delphi megkönnyíti a programozást az alkalmazásokba történő behúzással.
Valójában húzhat és dobhat át / bárhová, bárhová tetszik, például egyik űrlapról a másikra, vagy a Windows Intézőből az alkalmazásba.
Példa húzásra és cseppre
Indítson el egy új projektet, és tegyen egy képvezérlőt egy űrlapra. Az Object Inspector használatával töltsön be egy képet (Képtulajdonság), majd állítsa be a DragMode ingatlan dmManual. Készítünk egy programot, amely lehetővé teszi a TImage vezérlő futási idejének áthelyezését a drag and drop technika.
DragMode
Az alkatrészek kétféle húzást tesznek lehetővé: automatikus és kézi. A Delphi a DragMode tulajdonságot használja az irányításhoz, amikor a felhasználó képes húzni a vezérlőt. Ennek a tulajdonságnak az alapértelmezett értéke a dmManual, azaz az összetevők húzása a az alkalmazás nem megengedett, kivéve különleges körülmények között, amelyekre a megfelelő kód. A DragMode tulajdonság beállításától függetlenül az összetevő csak akkor mozog, ha a helyes kódot írták az áthelyezéshez.
OnDragDrop
Az áthúzást felismerő eseményt OnDragDrop eseménynek hívják. Arra használjuk, hogy meghatározzuk, hogy mi történjen, amikor a felhasználó eldob egy tárgyat. Ezért, ha egy összetevőt (képet) át akarunk helyezni egy űrlap új helyére, akkor ki kell írnunk az űrlap OnDragDrop eseménykezelőjének kódját.
Az OnDragDrop esemény Source paramétere az eldobott objektum. A forrásparaméter típusa TObject. A tulajdonságok eléréséhez a megfelelő komponens típusba kell adnunk, amely ebben a példában a TImage.
Elfogad
Az űrlap OnDragOver eseményét kell használnunk annak jelzésére, hogy az űrlap elfogadja a TImage vezérlőt, amelyet rá akarunk hagyni. Bár az Elfogadás paraméter alapértelmezés szerint True, ha egy OnDragOver eseménykezelőt nem szállítanak, a vezérlő elutasítja a húzott objektumot (mintha az Accept paraméter hamisra lett módosítva).
Futtassa a projektet, és próbálja meg áthúzni a képet. Vegye figyelembe, hogy a kép húzás közben továbbra is látható az eredeti helyén egérmutató mozog. Nem használhatjuk az OnDragDrop eljárást az összetevő láthatatlanná tételéhez, amíg a húzás megtörténik, mert ezt az eljárást csak akkor hívják meg, ha a felhasználó eldobja az objektumot (ha egyáltalán).
DragCursor
Ha meg akarja változtatni a kurzor képét, amikor a vezérlőt húzza, akkor használja a DragCursor tulajdonságot. A DragCursor tulajdonság lehetséges értékei megegyeznek a Kurzor tulajdonság értékeivel. Használhat animált kurzorokat, vagy bármi másat, például BMP képfájlt vagy CUR kurzorfájlt.
BeginDrag
Ha a DragMode dmAutomatic, a húzás automatikusan elindul, amikor egy egérgombot nyomunk le a kurzorral a vezérlőn. Ha a TImage DragMode tulajdonságának értékét a dmManual alapértelmezett értékére hagyta, BeginDrag / EndDrag módszereket kell használnia az összetevő húzásához. A drag and drop gyakoribb módja, ha a DragMode-et dmManual-ra állítja, és elindítja a húzást az egér lefelé irányuló események kezelésével.
Most használjuk a Ctrl + MouseDown billentyűzet kombináció, amely lehetővé teszi a húzást. Készlet TImage's DragMode vissza a dmManualhoz, és így írhatja a MouseDown eseménykezelőt:
BeginDrag vesz egy logikai paramétert. Ha átadjuk az Igaz értéket (mint ebben a kódban), akkor a húzás azonnal megkezdődik; ha hamis, akkor csak akkor indul el, amíg az egeret rövid távolságba mozgatjuk. Ne feledje, hogy ehhez a Ctrl gombra van szükség.