Разбиране на операции за влачене и пускане в Delphi

click fraud protection

За да „плъзнете и пуснете“ означава да задържите бутона компютърна мишка бутон, когато мишката е преместена, и след това пуснете бутона, за да пуснете обекта. Delphi улеснява програмирането на влачене и пускане в приложения.

Наистина можете да плъзгате и пускате от / до където пожелаете, например от една форма до друга или от Windows Explorer към приложението си.

Пример за плъзгане и пускане

Стартирайте нов проект и поставете един контролен образ върху формуляр. Използвайте Object Inspector, за да заредите снимка (свойство на изображението) и след това задайте DragMode собственост на dmManual. Ще създадем програма, която ще позволи преместване на TImage време за изпълнение с помощта на техника на влачене и пускане.

DragMode

Компонентите позволяват два вида влачене: автоматично и ръчно. Delphi използва свойството DragMode, за да контролира кога потребителят може да влачи контрола. Стойността по подразбиране това свойство е dmManual, което означава, че влачите компоненти около приложението не е позволено, освен при специални обстоятелства, за които трябва да напишем подходящ код. Независимо от настройката за свойството DragMode, компонентът ще се премести само ако е написан правилния код, за да го препозиционира.

instagram viewer

OnDragDrop

Събитието, което разпознава плъзгане и пускане, се нарича събитието OnDragDrop. Използваме го, за да уточним какво искаме да се случи, когато потребителят пусне обект. Следователно, ако искаме да преместим компонент (изображение) на ново място във формуляр, трябва да напишем код за обработващия събитието OnDragDrop на формата.

Изходният параметър на събитието OnDragDrop е обектът, който се изпуска. Типът на параметъра източник е TObject. За достъп до неговите свойства трябва да го прехвърлим към правилния тип компонент, който в този пример е TImage.

приемам

Трябва да използваме събитието OnDragOver на формата, за да сигнализираме, че формулярът може да приеме контрола TImage, който искаме да оставим върху него. Въпреки че Приемете параметър по подразбиране е True, ако не е предоставен манипулатор на събитията OnDragOver, контролът отхвърля изтегления обект (сякаш параметърът Accept е променен на False).

Стартирайте проекта си и опитайте да плъзнете и пуснете изображението си. Забележете, че изображението остава видимо в оригиналното си местоположение, докато влачите курсорът на мишката се движи. Не можем да използваме процедурата OnDragDrop, за да направим компонента невидим, докато се изтегля, тъй като тази процедура се извиква само след като потребителят изпусне обекта (ако изобщо е такъв).

DragCursor

Ако искате да промените изображението на курсора, представено при влаченето на контрола, използвайте свойството DragCursor. Възможните стойности за свойството DragCursor са същите като тези за свойството Cursor. Можете да използвате анимирани курсори или каквото пожелаете, като BMP файл с изображения или файл с курсор CUR.

BeginDrag

Ако DragMode е dmAutomatic, влаченето започва автоматично, когато натискаме бутон на мишката с курсора на контрола. Ако сте оставили стойността на свойството DragMode на TImage по подразбиране на dmManual, трябва да използвате методите BeginDrag / EndDrag, за да разрешите влаченето на компонента. По-често срещаният начин за плъзгане и пускане е да настроите DragMode на dmManual и да стартирате влаченето, като обработвате събития с мишката надолу.

Сега ще използваме Ctrl + MouseDown комбинация от клавиатура, за да се позволи влаченето. Комплект TImageВърнете DragMode обратно към dmManual и напишете манипулатора на събитията MouseDown така:

BeginDrag приема булев параметър. Ако преминем True (като в този код), влаченето започва веднага; ако е False, той не започва, докато не преместим мишката на кратко разстояние. Не забравяйте, че той изисква клавиша Ctrl.

instagram story viewer