Pochopenie operácií drag and drop v Delphi

"Drag and drop" znamená podržať počítačová myš pri pohybe myši a potom uvoľnite tlačidlo, čím objekt upustíte. Delphi uľahčuje programovanie drag and drop do aplikácií.

Naozaj môžete drag and drop z / do kdekoľvek chcete, napríklad z jedného formulára do druhého alebo z Prieskumníka Windows do aplikácie.

Príklad pretiahnutia

Spustite nový projekt a do formulára vložte jeden ovládací prvok obrázka. Na načítanie obrázka použite Object Inspector (vlastnosť Picture) a potom nastavte DragMode majetok do dmManual. Vytvoríme program, ktorý umožní presunutie riadiaceho modulu TImage pomocou technika drag and drop.

DragMode

Komponenty umožňujú dva typy ťahania: automatické a manuálne. Delphi používa vlastnosť DragMode na riadenie toho, kedy je užívateľ schopný pretiahnuť ovládací prvok. Predvolená hodnota tejto vlastnosti je dmManual, čo znamená, že ťahaním komponentov okolo Žiadosť nie je povolená, s výnimkou osobitných okolností, za ktoré musíme napísať vhodný kód. Bez ohľadu na nastavenie vlastnosti DragMode sa komponent presunie, iba ak je na jeho premiestnenie zapísaný správny kód.

instagram viewer

OnDragDrop

Udalosť, ktorá rozpoznáva pretiahnutie, sa nazýva udalosť OnDragDrop. Používame ho na špecifikovanie toho, čo sa má stať, keď používateľ zruší objekt. Ak teda chceme presunúť komponent (obrázok) do nového umiestnenia vo formulári, musíme napísať kód pre obslužný program udalostí OnDragDrop vo formulári.

Parameter Source udalosti OnDragDrop je zrušený objekt. Typ zdrojového parametra je TObject. Aby sme sa dostali k jeho vlastnostiam, musíme ho preniesť na správny typ komponentu, ktorým je v tomto príklade TImage.

súhlasiť

Musíme použiť udalosť OnDragOver vo formulári, aby sme signalizovali, že formulár môže prijať kontrolu TImage, ktorú na ňu chceme upustiť. Aj keď prijať parameter Ak nie je dodaný obslužný program udalostí OnDragOver, štandardne je hodnota True, ovládací prvok odmietne pretiahnutý objekt (akoby parameter Accept bol zmenený na False).

Spustite svoj projekt a skúste obrázok presunúť myšou. Všimnite si, že obrázok zostáva počas ťahania viditeľný na svojom pôvodnom mieste kurzor myši sa pohybuje. Nemôžeme použiť postup OnDragDrop, aby sme počas preťahovania komponentu stali neviditeľným, pretože tento postup sa vyvolá až po tom, ako používateľ zruší objekt (ak vôbec).

DragCursor

Ak chcete zmeniť obrázok kurzora, ktorý sa zobrazuje pri presúvaní ovládacieho prvku, použite vlastnosť DragCursor. Možné hodnoty pre vlastnosť DragCursor sú rovnaké ako pre vlastnosť Kurzor. Môžete použiť animované kurzory alebo čokoľvek, čo sa vám páči, napríklad obrazový súbor BMP alebo kurzorový súbor CUR.

BeginDrag

Ak je DragMode dmAutomatic, ťahanie sa začne automaticky, keď stlačíme tlačidlo myši s kurzorom na ovládači. Ak ste ponechali hodnotu vlastnosti DragMode TImage na jej predvolenej hodnote dmManual, musíte na presunutie komponentu použiť metódy BeginDrag / EndDrag. Bežnejším spôsobom pretiahnutia je nastavenie DragMode na dmManual a spustenie pretiahnutia spracovaním udalostí myši.

Teraz použijeme Ctrl + MouseDown klávesová kombinácia umožňujúca ťahanie. sada TImage's DragMode späť do dmManualu a napíšu obsluhu udalosti MouseDown takto:

BeginDrag má booleovský parameter. Ak prejdeme True (podobne ako v tomto kóde), ťahanie začne okamžite; ak False, nespustí sa, kým myš nepresunieme na krátku vzdialenosť. Nezabudnite, že vyžaduje kláves Ctrl.