"Povlecite in spustite" pomeni, da držite gumb Računalniška miška Ko premikate miško, nato spustite gumb, da spustite predmet. Delphi olajša programiranje vlečenja in spuščanja v aplikacije.
Resnično lahko povlečete in spustite od / do kamor koli želite, na primer iz enega obrazca v drugega ali iz Windows Explorerja v svojo aplikacijo.
Primer vlečenja in spuščanja
Zaženite nov projekt in na obrazec postavite en nadzor slike. S pomočjo Object Inspector naložite sliko (Lastnost slike) in nato nastavite DragMode lastnina do dmManual. Ustvarili bomo program, ki bo omogočil premikanje izvajalnega časa nadzora TImage s pomočjo tehnika vlečenja in spuščanja.
DragMode
Komponente omogočajo dve vrsti vlečenja: samodejno in ročno. Delphi uporablja lastnost DragMode za nadzor, kdaj lahko uporabnik povleče nadzor. Privzeta vrednost te lastnosti je dmManual, kar pomeni, da povlečete komponente okoli prijava ni dovoljena, razen v posebnih okoliščinah, za katere moramo napisati ustrezna koda. Ne glede na nastavitev lastnosti DragMode se bo komponenta premaknila le, če je napisana pravilna koda, da jo ponovno postavi.
OnDragDrop
Dogodek, ki prepozna vlečenje in spuščanje, se imenuje dogodek OnDragDrop. Uporabljamo ga za določitev, kaj želimo, da uporabnik pade predmet. Zato, če želimo komponento (sliko) premakniti na novo lokacijo na obrazcu, moramo napisati kodo za obdelovalec dogodkov OnDragDrop obrazca.
Izvorni parameter dogodka OnDragDrop je objekt, ki se spusti. Vrsta izvornega parametra je TObject. Za dostop do njegovih lastnosti ga moramo dati na pravilno vrsto komponente, kar je v tem primeru TImage.
Sprejmi
Moramo uporabiti dogodek OnDragOver obrazca, da signaliziramo, da obrazec lahko sprejme krmiljenje TImage, ki ga želimo spustiti nanj. Čeprav Sprejmi parameter privzeto je True, če obdelovalec dogodkov OnDragOver ni na voljo, nadzor zavrne povlečeni predmet (kot da bi bil parameter Accept spremenjen v False).
Zaženite svoj projekt in poskusite povleči in spustiti sliko. Opazite, da slika med vlečenjem ostane vidna na prvotnem mestu kazalec miške se premika. Postopka OnDragDrop ne moremo uporabiti, da komponenta postane nevidna, medtem ko se vlečenje izvaja, ker se ta postopek pokliče šele, ko uporabnik spusti predmet (če sploh).
DragCursor
Če želite spremeniti sliko kazalca, predstavljeno med vlečenjem elementa, uporabite lastnost DragCursor. Možne vrednosti lastnosti DragCursor so enake kot za lastnost Cursor. Uporabite lahko animirane kazalce ali kar koli želite, na primer slikovno datoteko BMP ali datoteko kurzorja CUR.
StartDrag
Če je DragMode dmAutomatic, se vlečenje začne samodejno, ko pritisnemo na gumb miške s kazalcem na krmilniku. Če ste vrednost lastnosti DragMode TImage pustili privzeto dmManual, morate uporabiti metode BeginDrag / EndDrag, da omogočite vleko komponente. Pogostejši način vlečenja in spuščanja je, da DragMode nastavite na dmManual in začnete vlečenje z rokovanjem z dogodki z miško navzdol.
Zdaj bomo uporabili Ctrl + MouseDown kombinacija tipkovnice, da se omogoči vlečenje. Set TImageDragMode se vrne v dmManual in napiše obdelovalec dogodkov MouseDown takole:
BeginDrag sprejme booleov parameter. Če preidemo True (kot v tej kodi), se vlečenje začne takoj; če je napačno, se ne začne, dokler miške ne premaknemo na kratko razdaljo. Ne pozabite, da potrebuje tipko Ctrl.