J'ai un TComboBox sur un formulaire. Sa propriété Style est définie sur csDropDownList. Si j'ouvre la liste déroulante et sélectionnez une option avec ma souris ou mon clavier et appuyez sur ENTRÉE, la liste déroulante se ferme et la propriété ItemIndex est modifiée avant que le gestionnaire d'événements KeyPress ne soit déclenché. Si je clique sur TAB, la liste déroulante ne disparaît pas tant que le gestionnaire d'événements KeyPress n'a pas été déclenché et que le focus ne s'est plus déplacé et que ItemIndex n'est pas mis à jour. il revient à tout ce qui avait été sélectionné avant que j'ouvre la liste.Comment faire pour que la touche TAB ferme une TComboBox sans perdre la position actuelle?
Si je veux que TAB mette à jour ItemIndex avec tout ce qui est actuellement sélectionné dans la liste déroulante, comment l'implémenterais-je?
Je trouve amusant que vous poser des questions avec Steven et François comme en général les réponses les plus courantes, surtout depuis que Steven est assis derrière vous . –
Si vous utilisez le clavier pour sélectionner une valeur dans une zone de liste déroulante, vous devez utiliser uniquement le clavier et ne pas ouvrir la liste déroulante. En appuyant sur les flèches haut et bas, vous pouvez modifier directement l'élément sélectionné (et la valeur de la propriété ItemIndex), et l'onglet fonctionnera normalement. D'accord, vous n'avez pas le contrôle sur la liste des éléments dans la liste déroulante, mais s'il y a beaucoup d'éléments, un architecte d'interface devrait se demander si une combobox est le bon contrôle pour le travail. –
D'accord avec Stijn, et avec skamradt, et conformément à ces commentaires, je suggère que vous vous montrez réticent à modifier le comportement par défaut d'un élément d'interface commun (à moins que ce comportement par défaut ne soit manifestement non standard). – Argalatyr