"Vilkt un nomest" nozīmē turēt nospiestu taustiņu Datorpele pogu, kad pele tiek pārvietota, un pēc tam atlaidiet pogu, lai nomestu objektu. Delphi ļauj ērti programmēt vilkšanu un nomešanu lietojumprogrammās.
Jūs patiešām varat vilkt un nomest no / uz jebkuru vietu, kur vēlaties, piemēram, no vienas formas uz otru vai no Windows Explorer uz savu programmu.
Vilkšanas un nomešanas piemērs
Sāciet jaunu projektu un ievietojiet veidlapā vienu attēla vadību. Izmantojiet Object Inspector, lai ielādētu attēlu (attēla īpašums), un pēc tam iestatiet DragMode īpašums dmManual. Mēs izveidosim programmu, kas ļaus pārvietot TImage vadības izpildlaiku, izmantojot velciet un nometiet tehniku.
DragMode
Komponenti pieļauj divu veidu vilkšanu: automātisko un manuālo. Delphi izmanto funkciju DragMode, lai kontrolētu, kad lietotājs var vilkt vadības ierīci. Šī īpašuma noklusējuma vērtība ir dmManual, kas nozīmē, ka komponentu vilkšana ap pieteikums nav atļauts, izņemot īpašus apstākļus, par kuriem mums ir jāraksta atbilstošs kods. Neatkarīgi no DragMode rekvizīta iestatījumiem, komponents pārvietosies tikai tad, ja būs pareizs kods, lai to pārvietotu.
OnDragDrop
Notikumu, kas atpazīst vilkšanu un nomešanu, sauc par OnDragDrop notikumu. Mēs to izmantojam, lai norādītu, kas mēs vēlamies notikt, kad lietotājs nomet objektu. Tāpēc, ja mēs vēlamies komponentu (attēlu) pārvietot uz jaunu veidlapas atrašanās vietu, mums ir jāraksta kods veidlapas OnDragDrop notikumu apstrādātājam.
Notikuma OnDragDrop avota parametrs ir objekts, kas tiek nomests. Avota parametra tips ir TObject. Lai piekļūtu tā īpašībām, mums tas ir jānodod pareizajam komponentu tipam, kas šajā piemērā ir TImage.
Piekrītu
Mums ir jāizmanto veidlapas OnDragOver notikums, lai norādītu, ka veidlapa var pieņemt TImage vadību, kuru vēlamies pamest. Kaut arī Piekrītu parametrs pēc noklusējuma ir Patiess, ja netiek piegādāts OnDragOver notikumu apstrādātājs, vadība noraida vilkto objektu (it kā Accept parametru mainītu uz False).
Palaidiet savu projektu un mēģiniet vilkt un nomest attēlu. Ievērojiet, ka vilkšanas laikā attēls paliek redzams sākotnējā vietā peles rādītājs pārvietojas. Mēs nevaram izmantot OnDragDrop procedūru, lai padarītu komponentu neredzamu, kamēr vilkšana notiek, jo šī procedūra tiek izsaukta tikai pēc tam, kad lietotājs nomet objektu (ja vispār).
DragCursor
Ja vēlaties mainīt kursora attēlu, kas parādīts, velkot vadīklu, izmantojiet īpašumu DragCursor. Īpašības DragCursor iespējamās vērtības ir tādas pašas kā īpašumam Kursors. Jūs varat izmantot animētus kursorus vai jebkuru citu, kas jums patīk, piemēram, BMP attēla failu vai CUR kursora failu.
BeginDrag
Ja DragMode ir dmAutomatic, vilkšana sākas automātiski, kad mēs nospiežam peles pogu ar kursoru uz vadības ierīces. Ja esat atstājis TImage rekvizīta DragMode vērtību pēc noklusējuma dmManual, jums ir jāizmanto BeginDrag / EndDrag metodes, lai atļautu komponenta vilkšanu. Biežāks vilkšanas un nomešanas veids ir iestatīt DragMode uz dmManual un sākt vilkšanu, rīkojoties ar peles nolaišanas notikumiem.
Tagad mēs izmantosim Ctrl + MouseDown tastatūras kombinācija, lai varētu vilkt. Komplekts TImageDragMode atgriežas dmManual un raksta MouseDown notikumu apstrādātāju šādi:
BeginDrag ņem Būla parametru. Ja mēs palaižam garām True (tāpat kā šajā kodā), vilkšana sākas tūlīt; ja Nepatiess, tas nesākas, kamēr peli nenovirzām no neliela attāluma. Atcerieties, ka tai nepieciešama Ctrl taustiņš.