Probleme combobox clavier souris

cs_philpas Messages postés 77 Date d'inscription lundi 17 octobre 2005 Statut Membre Dernière intervention 4 septembre 2008 - 6 déc. 2005 à 16:26
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 8 déc. 2005 à 01:20
bonjour,
j'ai un petit problème sur lequel je tourne en rond. J'ai un combobox et d'autre élément (bouton, stringgrid) sur ma fiche. Je voudrais que lorsque combobox devient actif qu'il m'ouvre la boite déroulante. pour cela j'ai trouvé la fonction DroppedDown que je met à true pour ouvrir la boite déroulante. Jutilise delphi6 perso

- lorsque mon curseur est sur combobox, avec l'évènement OnKeyPress, dès que j'appuie sur un caractère, la liste s'ouvre.=> c'est bon
- lorsque mon curseur est sur combobox, avec l'évènement OnKeyDown, dès que j'appuie sur une flèche du clavier, la liste s'ouvre => c'est bon
- Lorsque j'utilise la touche Tab et que combobox est de nouveau sélectionné, avec l'évènement OnEnter, la liste s'ouvre => c'est bon
Jusque là tout les événements claviers fonctionnent. Mon problème arrive avec l'utilisation de la souris. Lorsque le focus se trouve sur un autre élément que le combobox et que je clique avec la souris sur la flèche déroulante de combobox, celui m'affiche furtivement la liste avant de la refermer aussitot. Il faut que je reclique une nouvelle fois pour que la liste reste ouverte. Alors que si je clique sur la zone de saisi de combobox, celui ci m'ouvre la liste déroulante correctement. Comment puis je régler ce problème?
Autre observation, si je supprime l'évènement OnEnter, la liste ne se déroule plus avec la touche Tab (normal) mais par contre si je clique sur la flèche de combobox, la liste reste affiché.

voilà ce que j'ai mis dans OnEnter
procedure TFiche_reference_produit.ComboBox1_ReferenceEnter(Sender: TObject);
begin
if ComboBox1_Reference.Text<>'' then ComboBox1_Reference.DroppedDown:=true;
end;

Si je pouvais mettre le focus sur combobox avant de mettre DroppedDown à true, peut être que cela fonctionnerais, mais la fonction ComboBox1_Reference.SetFocus ne fonctionne pas s'il y a déjà un texte (et c'est le cas) dans la zone de saisie.

Des idées de solutions?
Merci

3 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
6 déc. 2005 à 20:28
alors c'est une solution sans en etre une ...

vire la declaration OnEnter pour la touche TAB.

en effet, quand on selectionne avec TAB on a pas forcement besoin que la liste s'ouvre.
dés qu'on a le focus grace a TAB il suffit d'appuyer sur Fleche Bas par exemple pour derouler la liste.

enfin, moi je ferais comme ça...

<hr size="2" width="100%">La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>
0
cs_philpas Messages postés 77 Date d'inscription lundi 17 octobre 2005 Statut Membre Dernière intervention 4 septembre 2008
7 déc. 2005 à 08:29
oui c'est vrai, c'est sans doute la solution la plus simple
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
8 déc. 2005 à 01:20
je le pense aussi, bien que, comme je l'ai dis , ce n'est pas une solution au probleme.

mais la plupart du temps TAB est utilisée pour aller d'un compo a un autre (bouton, liste ect...)
cela doit rester une touche de selection et en aucun cas devenir une touche d'action.

<hr size="2" width="100%">La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>
0
Rejoignez-nous