[R] Combo avec liste dynamique et affichage $CBS_SIMPLE

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Jerem
Niveau 2
Niveau 2
Messages : 25
Enregistré le : ven. 17 mai 2013 11:13
Status : Hors ligne

[R] Combo avec liste dynamique et affichage $CBS_SIMPLE

#1

Message par Jerem »

Bonjour,

Au cours du développement d'une GUI je rencontre un petit problème de superposition avec la liste d'une combobox avec l'attribut $CBS_SIMPLE et je ne sais même pas s'il existe une solution à mon souci d'affichage.

Je vous invite à tester le code suivant pour comprendre :
► Afficher le texte
Bien-sûr ceci n'est qu'une illustration très simple du problème.
Ma gui contient plusieurs combo avec des listes dynamiques qui doivent s'afficher dès qu'elles ont le focus.

J'ai essayé d'autres solutions mais qui n'arrivaient pas à ce que je souhaitais. Maintenant mon seul problème est l'affichage.
Modifié en dernier par Jerem le ven. 24 mai 2013 15:49, modifié 1 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Combo avec liste dynamique et affichage $CBS_SIMPLE

#2

Message par jguinch »

Salut.
La superposition des contrôles engendre souvent ce genre d'effet.
En général, il suffit de désactiver le contrôle du "dessous" mais je ne pense pas que ce soit ce que tu veux.
Sinon, tu pourrais essayer de mettre tes combos dans des fenêtres enfants transparentes, mais après la gestion sera plus difficile...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Combo avec liste dynamique et affichage $CBS_SIMPLE

#3

Message par mikell »

Faut dire aussi que le style $CBS_SIMPLE est assez restrictif...
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Jerem
Niveau 2
Niveau 2
Messages : 25
Enregistré le : ven. 17 mai 2013 11:13
Status : Hors ligne

Re: [..] Combo avec liste dynamique et affichage $CBS_SIMPLE

#4

Message par Jerem »

@jguinchard : Effectivement, j'avais pensé à désactiver les contrôles sous la combobox, mais au delà du fait que cela pose des problèmes d'utilisation (obligé de quitter la liste pour un élément qui ne se trouve pas sous la liste pour pouvoir ensuite retourner sur un élément sous la liste (suis-je clair là ??)), les éléments désactivés se superposent toujours à la liste.

Le seul moyen est de les cacher mais alors là on rentre dans un autre monde. :P

La réponse de Mikell me conforte dans l'idée qu'il n'y a pas de solution simple à mon problème.

L'idée de mettre les combos dans des fenêtres séparées n'est pas mauvaise, mais cela me demanderait de revoir tout mon code.

Une solution "simple" consiste à prévoir un espace vierge de tout élément mais ça prend de la place pour rien.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Combo avec liste dynamique et affichage $CBS_SIMPLE

#5

Message par TommyDDR »

Une autre solution simple consiste à créer le combo en dernier.

placez la ligne

Code : Tout sélectionner

$combo = GUICtrlCreateCombo("", 10, 10, 100, 28, BitOR($WS_VSCROLL, $CBS_SIMPLE))
Juste avant la ligne

Code : Tout sélectionner

GUISetState()
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Jerem
Niveau 2
Niveau 2
Messages : 25
Enregistré le : ven. 17 mai 2013 11:13
Status : Hors ligne

Re: [..] Combo avec liste dynamique et affichage $CBS_SIMPLE

#6

Message par Jerem »

Sur mon PC ça passe avec les labels, mais pas avec l'input.

Il faudrait peut-être empêcher l'activation des contrôles dynamiques au passage de la souris.

Je regarderai ça.

Merci.
Jerem
Niveau 2
Niveau 2
Messages : 25
Enregistré le : ven. 17 mai 2013 11:13
Status : Hors ligne

Re: [R] Combo avec liste dynamique et affichage $CBS_SIMPLE

#7

Message par Jerem »

mikell a écrit :Faut dire aussi que le style $CBS_SIMPLE est assez restrictif...
J'ai peut-être trouvé une solution grâce à ce message :

http://www.autoitscript.fr/forum/viewto ... 331#p65331

Il y a une piste intéressante à creuser.


EDIT : Mon vrai programme comportait déjà un GUIRegisterMsg, j'ai ajouté un GuiCtrlSetStat ($control, $GUI_ONTOP) dans la catégorie $CBN_SETFOCUS et ça fonctionne.

Pour "réafficher" les autres contrôles, je réduis la taille de la combobox lorsque celle-ci perd le focus ou que le choix est validé par la touche entrée et le tour est joué.

Merci pour cette aide indirecte Mikell

Je passe le sujet en résolu.
Répondre