Forstå træk og slip-operationer i Delphi

click fraud protection

At "trække og slippe" er at holde nede computermus, når musen flyttes, og slip derefter knappen for at slippe objektet. Delphi gør det nemt at programmere træk og slip i applikationer.

Du kan virkelig trække og slippe fra / til hvor du vil, som fra en form til en anden eller fra Windows Stifinder til din applikation.

Eksempel på træk og slip

Start et nyt projekt, og sæt en billedkontrol på en formular. Brug Objektinspektør til at indlæse et billede (Billedegenskab) og indstil derefter DragMode ejendom til dmManual. Vi opretter et program, der tillader at flytte en TImage-kontrolkørsel ved hjælp af træk og slip teknik.

DragMode

Komponenter tillader to typer trækning: automatisk og manuel. Delphi bruger egenskaben DragMode til at kontrollere, når brugeren er i stand til at trække kontrollen. Standardværdien for denne egenskab er dmManual, hvilket betyder at trække komponenter rundt om ansøgning er ikke tilladt, undtagen under særlige omstændigheder, som vi er nødt til at skrive passende kode. Uanset indstillingen for egenskaben DragMode, bevæger komponenten sig kun, hvis den korrekte kode er skrevet for at flytte den igen.

instagram viewer

OnDragDrop

Den begivenhed, der genkender træk og slip, kaldes OnDragDrop-begivenheden. Vi bruger det til at specificere, hvad vi vil ske, når brugeren taber et objekt. Derfor, hvis vi vil flytte en komponent (billede) til en ny placering på en formular, er vi nødt til at skrive kode til formularens OnDragDrop begivenhedshåndterer.

Kildeparameteren for OnDragDrop-begivenheden er det objekt, der slettes. Kildeparametertypen er TObject. For at få adgang til dens egenskaber er vi nødt til at caste den til den rigtige komponenttype, som i dette eksempel er TImage.

Acceptere

Vi er nødt til at bruge formularens OnDragOver-begivenhed for at signalere, at formularen kan acceptere den TImage-kontrol, vi vil slippe på den. Selvom accept parameter er standard til sandt, hvis en OnDragOver-begivenhedshåndterer ikke leveres, afviser kontrollen det trækkede objekt (som om Accept-parameteren blev ændret til Falsk).

Kør dit projekt, og prøv at trække og slippe dit billede. Bemærk, at billedet forbliver synligt på sin oprindelige placering, mens trækket musemarkøren bevæger sig. Vi kan ikke bruge OnDragDrop-proceduren til at gøre komponenten usynlig, mens trækningen finder sted, fordi denne procedure først kaldes, når brugeren har tabt objektet (hvis overhovedet).

DragCursor

Hvis du vil ændre cursorbilledet, der vises, når kontrollen trækkes, skal du bruge egenskaben DragCursor. De mulige værdier for egenskaben DragCursor er de samme som for markøren. Du kan bruge animerede markører eller hvad du vil, som en BMP-billedfil eller en CUR-cursorfil.

BeginDrag

Hvis DragMode er dmAutomatic, begynder trækning automatisk, når vi trykker på en museknap med markøren på kontrollen. Hvis du har forladt værdien af ​​TImages egenskab DragMode som dens standard som dmManual, skal du bruge BeginDrag / EndDrag-metoder for at tillade trækning af komponenten. En mere almindelig måde at trække og slippe er at indstille DragMode til dmManual og starte trækningen ved at håndtere mus-ned-begivenheder.

Nu bruger vi Ctrl + mouseDown tastaturkombination for at lade træk finde sted. Sæt TImageDragMode tilbage til dmManual og skriv MouseDown begivenhedshåndtereren sådan:

BeginDrag tager en boolsk parameter. Hvis vi passerer sandt (som i denne kode), begynder trækning med det samme; hvis falsk, begynder det ikke, før vi bevæger musen en kort afstand. Husk, at det kræver Ctrl-nøglen.

instagram story viewer