"Lohistage" tähendab, et hoidke all klahvi arvutihiir hiire liigutamisel nuppu ja vabastage siis nupp, et objekt alla lasta. Delphi abil on hõlbus programmeerida rakendustesse lohistamist.
Saate tõesti lohistada kuhu ja kuhu soovite, näiteks ühest vormist teise või Windows Explorerist oma rakendusse.
Lohistamise ja kukutamise näide
Alustage uut projekti ja pange vormile üks pildikontroll. Kasutage objektiinspektorit pildi (pildi atribuut) laadimiseks ja seejärel seadke DragMode vara kuni dmManual. Loome programmi, mis võimaldab TImage'i juhtimisaega teisaldada, kasutades lohistamise tehnika.
DragMode
Komponendid võimaldavad kahte tüüpi lohistamist: automaatne ja käsitsi. Delphi kasutab omadust DragMode, et kontrollida, millal kasutaja saab juhtnuppu lohistada. Selle omaduse vaikeväärtus on dmManual, mis tähendab, et komponentide lohistamine ümber taotlus ei ole lubatud, välja arvatud erijuhtudel, mille jaoks peame kirjutama sobiv kood. Sõltumata omaduse DragMode seadistusest liigub komponent ainult siis, kui selle ümberpaigutamiseks on kirjutatud õige kood.
OnDragDrop
Lohistamist tuvastavat sündmust nimetatakse OnDragDrop-sündmuseks. Kasutame seda selleks, et täpsustada, mis juhtub, kui kasutaja objekti kukub. Seetõttu, kui soovime komponendi (pildi) vormil uude kohta teisaldada, peame vormi OnDragDropi sündmuste käitleja jaoks koodi kirjutama.
OnDragDrop sündmuse lähteparameeter on objekt, mis kukutatakse. Lähteparameetri tüüp on TObject. Selle omadustele juurdepääsu saamiseks peame valima selle õigele komponenditüübile, mis antud näites on TImage.
Nõus
Peame kasutama vormi sündmust OnDragOver, et anda märku, et vorm võib aktsepteerida TImage-juhtelementi, mille tahame selle peale jätta. Kuigi nõustuda parameeter vaikimisi väärtuseks Tõene, kui OnDragOveri sündmuste käitlejat ei pakuta, lükkab juhtseadis lohistatud objekti (nagu oleks parameetri Nõustu muutmine väärtuseks Väär).
Käivitage oma projekt ja proovige oma pilt lohistada. Pange tähele, et pilt jääb lohistamise ajal algsesse kohta nähtavaks hiirekursor liigub. Me ei saa OnDragDrop-protseduuri kasutada komponendi lohistamatuks muutmiseks lohistamise ajal, kuna seda protseduuri kutsutakse alles pärast seda, kui kasutaja objekti kukutab (kui üldse).
DragCursor
Kui soovite muuta juhtnupu lohistamisel esitatud kursori pilti, kasutage omadust DragCursor. Atribuudi DragCursor võimalikud väärtused on samad, mis atribuudil Kursor. Võite kasutada animeeritud kursoreid või mida iganes soovite, näiteks BMP-pildifaili või CUR-kursorifaili.
BeginDrag
Kui DragMode on dmAutomatic, algab lohistamine automaatselt, kui vajutame hiirenuppu kursori abil juhtnupul. Kui olete jätnud TImage'i omaduse DragMode väärtuse dmManual vaikeseadeks, peate komponendi lohistamiseks kasutama BeginDrag / EndDrag meetodeid. Tavalisem viis pukseerimiseks on seada DragMode väärtusele dmManual ja alustada lohistamist, käideldes hiirega alla suunatud sündmusi.
Nüüd kasutame Ctrl + MouseDown klaviatuurikombinatsioon lohistamise võimaldamiseks. Komplekt KujutisDragMode'i taastamine dmManualisse ja MouseDowni sündmuste käitleja nii:
BeginDrag võtab tõeväärtuse parameetri. Kui läheme õigeks (nagu selles koodis), algab lohistamine kohe; kui vale, siis see ei alga enne, kui liigutame hiirt väikese vahemaa. Pidage meeles, et see nõuab klahvi Ctrl.