Εφαρμογή στο στοιχείο κλικ / διπλό κλικ για TListView

Δελφούς Το στοιχείο ελέγχου TListView εμφανίζει μια λίστα στοιχείων σε στήλες με κεφαλίδες και υπο-στήλες στήλης ή κάθετα ή οριζόντια, με μικρά ή μεγάλα εικονίδια.

Όπως και οι περισσότεροι έλεγχοι Delphi, το TListView εκθέτει το Στο κλικ και OnDblClick (OnDoubleClick) συμβάντα.

Δυστυχώς, εάν πρέπει να ξέρετε σε ποιο στοιχείο έγινε κλικ ή διπλό κλικ, δεν μπορείτε να χειριστείτε απλώς τα συμβάντα OnClick / OnDblClick για να πάρετε το στοιχείο που έχετε κάνει κλικ.

Το συμβάν OnClick (OnDblClick) για το TListView εκτοξεύεται κάθε φορά που ο χρήστης κάνει κλικ στον έλεγχο - δηλαδή όταν συμβαίνει το κλικ κάπου μέσα στην περιοχή του πελάτη του ελέγχου.

Ο χρήστης μπορεί να κάνει κλικ μέσα στην προβολή λίστας, ΑΛΛΑ "χάσετε" κάποιο από τα στοιχεία. Επιπλέον, επειδή η προβολή λίστας μπορεί να αλλάξει την εμφάνισή της ανάλογα με την ιδιότητα ViewStyle, τον χρήστη μπορεί να έχει κάνει κλικ σε ένα στοιχείο, σε μια λεζάντα στοιχείου, σε ένα εικονίδιο αντικειμένου, "πουθενά", σε ένα εικονίδιο κατάστασης στοιχείου, και τα λοιπά.

instagram viewer

Σημείωση: η ιδιότητα ViewStyle καθορίζει τον τρόπο εμφάνισης των στοιχείων στην προβολή λίστας: τα στοιχεία μπορούν να εμφανιστούν ως ένα σύνολο κινητών εικονιδίων ή ως στήλες κειμένου.

Προβολή λίστας. Στο στοιχείο κλικ & Λίστα προβολής. Στο στοιχείο διπλό κλικ

Για να μπορέσετε να εντοπίσετε το στοιχείο με κλικ (εάν υπάρχει) κατά την εκκίνηση του συμβάντος OnClick για την προβολή λίστας, πρέπει να καθορίσετε τα στοιχεία της προβολής λίστας βρίσκονται κάτω από το σημείο που καθορίζεται από τις παραμέτρους Χ και Υ - δηλαδή τη θέση του ποντικιού τη στιγμή της "Κάντε κλικ".

Το TListiew's GetHitTestInfoAt συνάρτηση επιστρέφει πληροφορίες σχετικά με το καθορισμένο σημείο στην περιοχή πελάτη της λίστας λίστας.

Για να βεβαιωθείτε ότι έγινε κλικ στο στοιχείο (ή διπλό κλικ), πρέπει να καλέσετε το GetHitTestInfoAt και να αντιδράσετε μόνο εάν το συμβάν κλικ συνέβη σε ένα πραγματικό στοιχείο.

Ακολουθεί ένα παράδειγμα εφαρμογής του συμβάντος OnDblClick του ListView1:

// χειρίζεται το διπλό κλικ του ListView1διαδικασία TForm.ListView1DblClick(Αποστολέας: TObject);
var
hts: THitTests;
ht: THitTest;
sht: σειρά;
ListViewCursosPos: TPoint;
selectedItem: TListItem;
ξεκινήσει
// θέση του δρομέα του ποντικιού που σχετίζεται με το ListView
ListViewCursosPos: = ListView1.ScreenToClient (Ποντίκι. CursorPos);
// διπλό κλικ όπου;
hts: = ΛίσταView1.GetHitTestInfoAt (ListViewCursosPos. X, ListViewCursosPos. Υ).
// δοκιμή επιτυχίας "εντοπισμού σφαλμάτων"
Caption: = '';
Για ht σε hts κάνω
ξεκινήσει
sht: = GetEnumName (τύποςInfo (THitTest), ακέραιο (ht));
Λεζάντα: = Μορφή ('% s% s |', [Caption, sht]);
τέλος;
// εντοπίστε το στοιχείο με διπλό κλικ
αν hts <= [htOnIcon, htOnItem, htOnLabel, htOnStateIcon] έπειτα
ξεκινήσει
selectedItem: = ListView1.Selected;
// κάντε κάτι με το στοιχείο με διπλό κλικ!
Λεζάντα: = Μορφή ('DblClcked:% s', [selectedItem. Λεζάντα]) ;
τέλος;
τέλος;

Στο πρόγραμμα χειρισμού συμβάντων OnDblClick (ή OnClick), διαβάστε τη λειτουργία GetHitTestInfoAt παρέχοντάς της τη θέση του ποντικιού "μέσα" στο στοιχείο ελέγχου. Για να εμφανιστεί η θέση του ποντικιού στην προβολή λίστας, η συνάρτηση ScreenToClient χρησιμοποιείται για τη μετατροπή ενός σημείου (ποντίκι X και Y) σε συντεταγμένες οθόνης σε συντεταγμένες τοπικής ή πελατειακής περιοχής.

Η τιμή GetHitTestInfoAt επιστρέφει τιμή Τεστ Τεστ τύπος. Οι THitTests είναι ένα σύνολο από Δοκιμάστε απαριθμημένες τιμές.

Το THitTest απαρίθμηση οι αξίες, με την περιγραφή τους, είναι:

  • htAbove - πάνω από την περιοχή του πελάτη.
  • htBelow - κάτω από την περιοχή του πελάτη.
  • htNowhere - μέσα στον έλεγχο, αλλά όχι σε ένα στοιχείο.
  • htOnItem - σε ένα στοιχείο, το κείμενό του ή το bitmap του.
  • htOnButton - σε ένα κουμπί.
  • htOnIcon - σε μια εικόνα.
  • htOnIndent - στην εσοχή ενός στοιχείου.
  • htOnLabel - σε ετικέτα.
  • htOnRight - στη δεξιά πλευρά ενός στοιχείου.
  • htOnStateIcon - σε εικονίδιο κατάστασης ή bitmap που σχετίζεται με ένα στοιχείο.
  • htToLeft - στα αριστερά της περιοχής του πελάτη.
  • htToRight - στα δεξιά της περιοχής του πελάτη.

Αν το αποτέλεσμα της κλήσης στο GetHitTestInfoAt είναι a υποσύνολο (Delphi σύνολα!) του [htOnIcon, htOnItem, htOnLabel, htOnStateIcon], μπορείτε να είστε σίγουροι ότι ο χρήστης έκανε κλικ στο στοιχείο (ή στο εικονίδιο / εικονίδιο του).

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

Βεβαιωθείτε ότι έχετε κατεβάσει τον πλήρη πηγαίο κώδικα για να εξερευνήσετε τον κώδικα και να μάθετε υιοθετώντας τον.

instagram story viewer