Megértése a drag and drop műveletekről Delphi-ben

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.

instagram viewer

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.