Jei norite „vilkti ir mesti“, laikykite nuspaudę Kompiuterio pelė mygtuką, kai pele judama, tada atleiskite mygtuką, kad numestumėte objektą. „Delphi“ leidžia lengvai programuoti tempimą ir kritimą į programas.
Galite tikrai vilkti iš / į kur tik norite, pavyzdžiui, iš vienos formos į kitą arba iš „Windows Explorer“ į savo programą.
Vilkimo ir numetimo pavyzdys
Pradėkite naują projektą ir įdėkite į formą vieną vaizdo valdiklį. Norėdami įkelti paveikslėlį (paveikslėlio ypatybė), naudokite Objektų inspektorių, tada nustatykite „DragMode“ nuosavybė dmManual. Mes sukursime programą, kuri leis perkelti „TImage“ valdymo laiką naudojant tempimo ir kritimo technika.
„DragMode“
Komponentai leidžia vilkti du tipus: automatinį ir rankinį. „Delphi“ naudoja „DragMode“ ypatybę, kad valdytų, kada vartotojas gali vilkti valdiklį. Numatytoji šios savybės vertė yra „dmManual“, tai reiškia, kad komponentų vilkimas aplink paraiška neleidžiama, išskyrus ypatingas aplinkybes, dėl kurių turime parašyti atitinkamas kodas. Nepriklausomai nuo „DragMode“ ypatybės nustatymo, komponentas judės tik tuo atveju, jei bus pakeistas teisingas kodas, kad galėtumėte jį pakeisti.
„OnDragDrop“
Įvykis, atpažįstantis vilkimą, yra vadinamas „OnDragDrop“ įvykiu. Mes jį naudojame norėdami nurodyti, kas nutinka, kai vartotojas numeta objektą. Todėl, jei norime perkelti komponentą (atvaizdą) į naują vietą formoje, turime parašyti formos „OnDragDrop“ įvykių apdorojimo priemonės kodą.
„OnDragDrop“ įvykio šaltinio parametras yra objektas, kuris yra numetamas. Šaltinio parametro tipas yra „TObject“. Norėdami gauti prieigą prie jo savybių, turime pasirinkti tinkamą komponentų tipą, kuris šiame pavyzdyje yra „TImage“.
Priimti
Turime naudoti formos „OnDragOver“ įvykį, kad signalizuotume, kad forma gali priimti „TImage“ valdymą, kurį norime palikti. Nors Sutinku parametras numatytoji reikšmė yra „True“, jei nepateikiama „OnDragOver“ įvykių tvarkyklė, valdiklis atmeta nutemptą objektą (tarsi „Accept“ parametras būtų pakeistas į „False“).
Vykdykite projektą ir pamėginkite nuvilkti savo vaizdą. Atminkite, kad vilkimo metu vaizdas lieka matomas pradinėje vietoje pelės žymeklis juda. Negalime naudoti „OnDragDrop“ procedūros, kad komponentas būtų nematomas, kol vyksta vilkimas, nes ši procedūra iškviečiama tik po to, kai vartotojas numeta objektą (jei jo išvis yra).
„DragCursor“
Jei norite pakeisti žymeklio vaizdą, pateiktą vilkdami valdiklį, naudokite „DragCursor“ ypatybę. Galimos „DragCursor“ ypatybės yra tokios pačios kaip „Cursor“ nuosavybės vertės. Galite naudoti animuotus žymeklius ar bet ką, kas jums patinka, pvz., BMP vaizdo failą arba CUR žymeklio failą.
„BeginDrag“
Jei „DragMode“ yra „dmAutomatic“, vilkimas prasideda automatiškai, kai paspaudžiame pelės mygtuką su žymekliu valdiklyje. Jei palikote „TImage“ savybės „DragMode“ vertę kaip numatytąją „dmManual“, turite naudoti „BeginDrag“ / „EndDrag“ metodus, kad būtų galima vilkti komponentą. Įprastas būdas vilkti ir mesti yra nustatyti „DragMode“ į „dmManual“ ir pradėti vilkimą tvarkant pelės mygtukus.
Dabar mes naudosime „Ctrl“ + „MouseDown“ klaviatūros derinys, kad būtų galima vilkti. Rinkinys TImage„DragMode“ atgal į „dmManual“ ir parašykite „MouseDown“ įvykių tvarkyklę taip:
„BeginDrag“ paima loginį parametrą. Jei praeisime teisingai (kaip ir šiame kode), vilkimas prasideda iškart; jei melagingas, jis neprasideda tol, kol nepajudinsime pelės. Atminkite, kad tam reikia „Ctrl“ klavišo.