Κατανόηση των λειτουργιών μεταφοράς και πτώσης στους Δελφούς

click fraud protection

Για "μεταφορά και απόθεση" πρέπει να κρατήσετε πατημένο το ποντίκι υπολογιστή καθώς το ποντίκι μετακινείται και, στη συνέχεια, αφήστε το κουμπί για να το αφήσετε. Οι Δελφοί καθιστούν εύκολη την προγραμματισμένη μεταφορά και απόθεση σε εφαρμογές.

Μπορείτε να κάνετε drag and drop από / προς όποτε θέλετε, όπως από μια φόρμα σε άλλη ή από την Εξερεύνηση των Windows στην αίτησή σας.

Παράδειγμα σύλληψης και απόσπασης

Ξεκινήστε ένα νέο έργο και βάλτε ένα έλεγχο εικόνας σε μια φόρμα. Χρησιμοποιήστε τον Έλεγχο αντικειμένων για να φορτώσετε μια εικόνα (ιδιότητα Εικόνα) και, στη συνέχεια, ορίστε το DragMode ιδιοκτησία στο dmManual. Θα δημιουργήσουμε ένα πρόγραμμα που θα επιτρέψει τη μετακίνηση ενός χρόνου εκτέλεσης ελέγχου TImage χρησιμοποιώντας το τεχνική μεταφοράς και απόθεσης.

DragMode

Τα εξαρτήματα επιτρέπουν δύο τύπους σύρματος: αυτόματη και χειροκίνητη. Ο Delphi χρησιμοποιεί την ιδιότητα DragMode για να ελέγξει πότε ο χρήστης μπορεί να σύρει τον έλεγχο. Η προεπιλεγμένη τιμή είναι αυτή η ιδιότητα dmManual, πράγμα που σημαίνει ότι σύροντας στοιχεία γύρω από το η αίτηση δεν επιτρέπεται, εκτός από ειδικές περιπτώσεις, για τις οποίες πρέπει να γράψουμε κατάλληλο κωδικό. Ανεξάρτητα από τη ρύθμιση για την ιδιότητα DragMode, το στοιχείο θα μετακινηθεί μόνο εάν έχει γραφεί ο σωστός κώδικας για να το επανατοποθετήσετε.

instagram viewer

OnDragDrop

Το συμβάν που αναγνωρίζει τη μεταφορά και απόθεση ονομάζεται συμβάν OnDragDrop. Το χρησιμοποιούμε για να καθορίσουμε τι θέλουμε να συμβεί όταν ο χρήστης ρίχνει ένα αντικείμενο. Επομένως, εάν θέλουμε να μετακινήσουμε ένα στοιχείο (εικόνα) σε μια νέα θέση σε μια φόρμα, πρέπει να γράψουμε κώδικα για τον χειριστή συμβάντων OnDragDrop της φόρμας.

Η παράμετρος προέλευσης του συμβάντος OnDragDrop είναι το αντικείμενο που καταργείται. Ο τύπος της παραμέτρου προέλευσης είναι TObject. Για να αποκτήσετε πρόσβαση στις ιδιότητές του, πρέπει να το μεταφέρουμε στο σωστό τύπο εξαρτήματος, το οποίο σε αυτό το παράδειγμα είναι το TImage.

Αποδέχομαι

Πρέπει να χρησιμοποιήσουμε το συμβάν OnDragOver της φόρμας για να σημάνουμε ότι η φόρμα μπορεί να δεχτεί τον έλεγχο TImage που θέλουμε να την αφήσουμε. Αν και το Αποδοχή παράμετρο η προεπιλεγμένη τιμή True (True), εάν δεν παρέχεται πρόγραμμα χειρισμού συμβάντων OnDragOver, ο έλεγχος απορρίπτει το αντικείμενο που μεταφέρθηκε (σαν να έχει αλλάξει η παράμετρος Accept σε False).

Εκτελέστε το έργο σας και δοκιμάστε να σύρετε και να αποθέσετε την εικόνα σας. Παρατηρήστε ότι η εικόνα παραμένει ορατή στην αρχική της θέση κατά τη διάρκεια της μεταφοράς ο δείκτης του ποντικιού μετακινείται. Δεν μπορούμε να χρησιμοποιήσουμε τη διαδικασία OnDragDrop για να κάνουμε το στοιχείο αόρατο ενώ συμβαίνει η μεταφορά, επειδή αυτή η διαδικασία ονομάζεται μόνο αφού ο χρήστης αφήσει το αντικείμενο (εάν υπάρχει).

DragCursor

Αν θέλετε να αλλάξετε την εικόνα του δρομέα που παρουσιάζεται όταν σύρετε τον έλεγχο, χρησιμοποιήστε την ιδιότητα DragCursor. Οι πιθανές τιμές για την ιδιότητα DragCursor είναι οι ίδιες με εκείνες για την ιδιότητα Cursor. Μπορείτε να χρησιμοποιήσετε κινούμενους δρομείς ή ό, τι θέλετε, όπως ένα αρχείο εικόνας BMP ή ένα αρχείο δρομέα CUR.

BeginDrag

Αν το DragMode είναι dmAutomatic, η σύρσιμο αρχίζει αυτόματα όταν πιέζουμε ένα κουμπί του ποντικιού με τον κέρσορα στον πίνακα ελέγχου. Αν έχετε αφήσει την τιμή της ιδιότητας DragMode του TImage στην προεπιλογή του dmManual, πρέπει να χρησιμοποιήσετε μεθόδους BeginDrag / EndDrag για να επιτρέψετε τη μεταφορά του στοιχείου. Ένας πιο συνηθισμένος τρόπος μεταφοράς και απόθεσης είναι να ορίσετε το DragMode στο dmManual και να ξεκινήσετε τη μεταφορά σύροντας τα γεγονότα του ποντικιού.

Τώρα, θα χρησιμοποιήσουμε το Ctrl + MouseDown συνδυασμό πληκτρολογίου για να επιτρέπεται η μεταφορά. Σειρά TImage's DragMode πίσω στο dmManual και γράψτε τον χειριστή συμβάντων MouseDown όπως παρακάτω:

Το BeginDrag παίρνει μια Boolean παράμετρο. Εάν περάσουμε True (όπως σε αυτόν τον κώδικα), η σύλληψη αρχίζει αμέσως. αν False, δεν ξεκινάει μέχρι να μετακινήσουμε το ποντίκι σε μικρή απόσταση. Θυμηθείτε ότι απαιτεί το πλήκτρο Ctrl.

instagram story viewer