"Drag and drop" znamená podržet počítačová myš při pohybu myši a uvolněním tlačítka objekt vyhodíte. Delphi usnadňuje programování a přetahování do aplikací.
Skutečně můžete přetahovat z / do kdekoli, například z jednoho formuláře do druhého nebo z Průzkumníka Windows do aplikace.
Příklad přetažení a přetažení
Spusťte nový projekt a do formuláře vložte jeden ovládací prvek obrazu. K načtení obrázku použijte vlastnost Object Inspector (vlastnost Picture) a poté nastavte DragMode majetek dmManual. Vytvoříme program, který umožní přesunutí řídicího modulu TImage pomocí technika drag and drop.
DragMode
Komponenty umožňují dva typy tažení: automatický a ruční. Delphi používá vlastnost DragMode k řízení, kdy je uživatel schopen přetáhnout ovládací prvek. Výchozí hodnota této vlastnosti je dmManual, což znamená, že přetažením komponent kolem aplikace není povolena, s výjimkou zvláštních okolností, pro které musíme napsat příslušný kód. Bez ohledu na nastavení pro vlastnost DragMode se bude komponenta pohybovat, pouze pokud je zapsán správný kód, aby byl přemístěn.
OnDragDrop
Událost, která rozpoznává přetažení a přetažení, se nazývá událost OnDragDrop. Používáme jej ke stanovení toho, co se má stát, když uživatel upustí objekt. Proto pokud chceme přesunout komponentu (obrázek) do nového umístění ve formuláři, musíme napsat kód pro obsluhu události OnDragDrop ve formuláři.
Parametr Zdroj události OnDragDrop je zrušený objekt. Typ zdrojového parametru je TObject. Pro přístup k jeho vlastnostem musíme přetypovat správný typ komponenty, což je v tomto příkladu TImage.
Přijmout
Musíme použít událost OnDragOver ve formuláři, abychom signalizovali, že formulář může přijmout ovládací prvek TImage, který na něj chceme upustit. Přestože přijmout parametr Pokud není dodán obslužný program události OnDragOver, výchozí hodnota je True, ovládací prvek odmítne přetažený objekt (jako by byl parametr Accept změněn na False).
Spusťte svůj projekt a zkuste obrázek přetáhnout. Všimněte si, že obraz zůstává během tažení viditelný na svém původním místě ukazatel myši se pohybuje. Nemůžeme použít proceduru OnDragDrop, aby byla komponenta během přetahování neviditelná, protože tato procedura je volána až poté, co uživatel objekt upustí (pokud vůbec).
DragCursor
Pokud chcete změnit obrázek kurzoru zobrazený při přetahování ovládacího prvku, použijte vlastnost DragCursor. Možné hodnoty pro vlastnost DragCursor jsou stejné jako pro vlastnost Kurzor. Můžete použít animované kurzory nebo cokoli, jako je obrázekový soubor BMP nebo kurzorový soubor CUR.
BeginDrag
Pokud je DragMode dmAutomatic, přetažení začne automaticky, když stiskneme tlačítko myši s kurzorem na ovládacím prvku. Pokud jste ponechali hodnotu vlastnosti DragMode TImage na výchozí hodnotě dmManual, musíte použít metody BeginDrag / EndDrag, abyste umožnili přetažení komponenty. Běžnějším způsobem přetažení je nastavit DragMode na dmManual a zahájit přetažení zpracováním událostí dolů.
Nyní použijeme Ctrl + MouseDown kombinace klávesnice umožňující přetažení. Soubor TImage's DragMode zpět do dmManualu a napište popisovač události MouseDown takto:
BeginDrag vezme booleovský parametr. Pokud předáme True (jako v tomto kódu), přetažení začne okamžitě; pokud je False, nezačne to, dokud nepřesuneme myš na krátkou vzdálenost. Nezapomeňte, že vyžaduje klávesu Ctrl.