ПредишенСледващото

Има два варианта. Така или ръчно направено с помощта на мишката, за да събития, като държите левия бутон на бутон на мишката върху формата, последван от курсора, или да използвате стандартните функции.
Един прост начин - с помощта на събития на мишката за движение. Ние описваме булева променлива съпротивление. При определяне събитие OnMouseDown плъзгане: = вярно, т.е. което позволява движение. В случай манипулатор OnMouseMove присвои координира координати на бутона на мишката, така както беше направено в таймера, но с условието, ако плъзнете, след което [нашите действия]. И накрая, когато OnMouseUp изчисти променлива събитие - съпротивление: = неверни.
Примерен код:

Друг метод е: бутоните за имот DragMode възлагат dmAutomatic (бутонът автоматично се премества), и на имущество DragKind - dkDock (бутонът ще се присъедини и с други обекти, както аз го разбирам). Напред. Някои компоненти, особено с голям и празен работно пространство (формата, панелът, всички видове ленти), има DockSite имот - да седне върху компонента бутон, този комплекс трябва да бъде настроен така. Вярно е, че бутона случайно могат да се прекрати само по себе си, а не на док, така че трябва да бъдете внимателни, (тя ще се насочи и затваряне бутон, т.е. потребителят може случайно да го унищожи). Но това е удобно. Между другото, има допълнителни събития: OnDragDrop, OnDragOver, OnStartDock, OnStartDrag, OnEndDock, OnEndDrag. Надявам се, че ще се справят с тях, ако това е необходимо.

Отговорено 5 октомври '11 в 15:18

Какъв е проблемът?)

За да се справи случай, когато сме притиснати бутон на мишката, като MouseDown) Ами, например има променлива от тип булев Даун, да възложат това е вярно. В непосредствена близост до обработи във формуляра, когато поставите курсора на мишката, MouseMove. Тук пише нещо като това:

където X, Y - координати на текущата мишката;

Ако положението на бутон е посочен чрез тип Местоположение TPoint, а след това ги променя по съответния начин.

По-нататък, например, ако сме достигнали до положение в X и Y, тогава button1.Click на повикване ();

Е, аз мисля, че логиката е ясно, имам Delphi точно сега, че не е необходимо, така че пълният код не може да води.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!