[R] Récupérer contenu combo
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Récupérer contenu combo
Bonjour,
Je propose un combo dans lequel l'utilisateur fait son choix. S'il n'y trouve pas son bonheur, il peut entrer lui-même ses données. Par exemple, le combo propose les prénoms "Pierre, Jean, Paul, Jacques". Aucun de ces prénoms ne satisfaisant l'utilisateur, il peut entrer le prénom Louis.
Si je crée une fonction pour éditer la donnée (par exemple pour la mettre en majuscules), cette fonction va bien récupérer la donnée par un GUICtrlRead(), mais uniquement si l'utilisateur a pioché son prénom dans la liste du combo. Si c'est une donnée rentrée par lui, le GUICtrlRead() ne récupère rien.
Y a-t-il moyen de réussir la récupération dans tous les cas de figure ?
Je vous remercie.
Je propose un combo dans lequel l'utilisateur fait son choix. S'il n'y trouve pas son bonheur, il peut entrer lui-même ses données. Par exemple, le combo propose les prénoms "Pierre, Jean, Paul, Jacques". Aucun de ces prénoms ne satisfaisant l'utilisateur, il peut entrer le prénom Louis.
Si je crée une fonction pour éditer la donnée (par exemple pour la mettre en majuscules), cette fonction va bien récupérer la donnée par un GUICtrlRead(), mais uniquement si l'utilisateur a pioché son prénom dans la liste du combo. Si c'est une donnée rentrée par lui, le GUICtrlRead() ne récupère rien.
Y a-t-il moyen de réussir la récupération dans tous les cas de figure ?
Je vous remercie.
Modifié en dernier par aulus le jeu. 30 janv. 2014 11:15, modifié 1 fois.
- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Récupérer contenu combo
Chez moi, le code ci-dessous fonctionne comme vous le décrivez :
► Afficher le texte
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] Récupérer contenu combo
Merci Tlem pour votre test. Voici le mien dans lequel vous verrez que le code surligné en rouge n'a pas d'effet (le contenu de $Combo1 n'est pas mis en majuscules) :
► Afficher le texte
Modifié en dernier par jguinch le mer. 29 janv. 2014 21:57, modifié 1 fois.
Raison : Ajout de la balise Spoiler
Raison : Ajout de la balise Spoiler
Re: [..] Récupérer contenu combo
Quand on y réfléchit, c'est assez logique que ça ne fonctionne pas en mode event...
En imaginant qu'à chaque fois que tapes un caractère ça génère un événement, tu aurais pour la saisie du prénom "alain" les événements "a", "l", "a", "i" et "n". Donc ça serait un peu le foutoir, non ?
Tout simplement, tu pourrais ajouter un bouton "+" ou un truc du genre qui te permettrait, lors du clic, d'ajouter le prénom saisi à la liste.
Voilà ci-dessous deux exemples :
- le premier utilise WM_COMMAND pour capter les changement dans la combo, pour afficher le bouton "+" quand tu saisis du texte manuellement
- le deuxième utilise GUISetAccelerators avec un contrôle de type dummy, ce qui permet d'appeler la fonction Majuscule quand on clique sur la touche "Enter"
Du coup, ça complexifie le code, mais bon, le mode Event n'a pas que des avantages...
En imaginant qu'à chaque fois que tapes un caractère ça génère un événement, tu aurais pour la saisie du prénom "alain" les événements "a", "l", "a", "i" et "n". Donc ça serait un peu le foutoir, non ?
Tout simplement, tu pourrais ajouter un bouton "+" ou un truc du genre qui te permettrait, lors du clic, d'ajouter le prénom saisi à la liste.
Voilà ci-dessous deux exemples :
- le premier utilise WM_COMMAND pour capter les changement dans la combo, pour afficher le bouton "+" quand tu saisis du texte manuellement
- le deuxième utilise GUISetAccelerators avec un contrôle de type dummy, ce qui permet d'appeler la fonction Majuscule quand on clique sur la touche "Enter"
► Afficher le texteAvec WM_COMMAND
► Afficher le texteAvec GUISetAccelerators
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Re: [..] Récupérer contenu combo
Merci jguinch pour votre travail (codes et tests).
Dans les deux cas, le contenu de $form1 n'est pas mis en majuscules, but de l'opération. Le code de Tlem tout comme le mien n'y parviennent pas non plus.
Le code suivant est ignoré dans la fonction Majuscule() :
Dans les deux cas, le contenu de $form1 n'est pas mis en majuscules, but de l'opération. Le code de Tlem tout comme le mien n'y parviennent pas non plus.
Le code suivant est ignoré dans la fonction Majuscule() :
Code : Tout sélectionner
GUICtrlSetData($Combo, StringUpper(GUICtrlRead($Combo))) ; $Combo dans le code de Tlem
GUICtrlSetData($Combo1, StringUpper(GUICtrlRead($Combo1))) ; $Combo1 dans les nôtres
Re: [..] Récupérer contenu combo
Oh ! merveille... je crois que j'ai trouvé une solution : $CBS_UPPERCASE
Merci à tous pour votre travail.
Code : Tout sélectionner
Global $Combo = GUICtrlCreateCombo("", 24, 24, 145, 25, BitOR([color=#FF0000]$CBS_UPPERCASE[/color], $CBS_DROPDOWN,$CBS_AUTOHSCROLL))- TommyDDR
- Modérateur

- Messages : 2130
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [R] Récupérer contenu combo
Pour reprendre le code de jguinch :
► Afficher le textecode
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Re: [R] Récupérer contenu combo
Merci Tommy. Votre code met bien en majuscules l'entrée dans le combo lorsque celle-ci n'est pas sélectionnée dans la liste déroulante. Toutefois, si l'entrée est sélectionnée dans la liste déroulante, elle reste en minuscules. Cette solution est intéressante puisqu'il suffirait de remplir la liste déroulante directement en majuscules pour régler tous les cas de figure.
Toutefois, je vais garder la solution que j'ai trouvée et qui consiste à utiliser le style $CBS_UPPERCASE dans le combo, d'une simplicité imbattable !
Toutefois, je vais garder la solution que j'ai trouvée et qui consiste à utiliser le style $CBS_UPPERCASE dans le combo, d'une simplicité imbattable !
- TommyDDR
- Modérateur

- Messages : 2130
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [R] Récupérer contenu combo
Oui, en effet, le $CBS_UPPERCASE semble être là pour ça, il me semble aussi être la meilleure solution.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679

