Page 1 sur 1

[R] Remplacement d'un label par une combo apres refresh

Posté : lun. 23 sept. 2013 14:02
par hardfloor
Bonjour à tous,
Voilà j'ai un petit souci tout con, mais qui me prend la tête!
Je voudrais remplacer un label texte par une combobox apres un rafraichissement via une boucle.

Je vous ai recrée la situation

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>

$read1 = iniread("test.ini", "section", "mod", "")

#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("Form1", 616, 439, 192, 124)
$Tab1 = GUICtrlCreateTab(0, 0, 145, 25)
$TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
$Button1 = GUICtrlCreateButton("modifier l'ini", 192, 208, 129, 33)
$Button2 = GUICtrlCreateButton("ecrire l'ini", 20, 208, 129, 33)
$TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
$Label1 = GUICtrlCreateLabel("Test combo", 48, 72, 60, 17)
If $read1 = "inactif" Then
;~ $Combo58 = ""
$Label2 = GUICtrlCreateLabel($read1, 120, 72, 40, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
Else
$Combo58 = GUICtrlCreateCombo("--", 120, 72, 41, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData($Combo58, "1|2|3|4|5")
EndIf
GUICtrlSetState(-1,$GUI_SHOW)
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            iniwrite("test.ini", "section", "mod", "inactif4")
            for $i = 1 To 2
                iniread("test.ini", "section", "mod", "")
            Next
            $Combo58 = GUICtrlCreateCombo("--", 120, 80, 41, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
             GUICtrlSetData($Combo58, "1|2|3|4|5")
        Case $Button2
             iniwrite("test.ini", "section", "mod", "inactif")
    EndSwitch
WEnd

 
Donc le bouton "ecrire" ecrit l'ini avec le resultat "inactif" ce que donne un label "resultat" sur la gui donc tout va bien!
L'autre bouton "modifier l'ini" écrit "resultat4", donc étant donné que c'est différent du resultat escompté , j'aimerais que ma combobox remplace le texte "inactif"! apres la lecture de la boucle!
J'arrive à faire apparaitre ma combo mais je la recrée une 2 ieme fois et donc elle s'ecrit par dessus les onglets. je voudrais simplement réutiliser la premiere...........
si vous avez pas compris, je réexplique!
:mrgreen: :mrgreen:

Re: [..] Remplacement d'un label par une combo apres refresh

Posté : lun. 23 sept. 2013 14:05
par FireFox
Bonjour,
Où veux-tu remplacer le label? Parce ton système de tab est un peu bizarre.

A mon avis tu auras besoin de la fonction GUISwitch pour créer ton Combo sur la bonne tab OU peut être GUICtrlSetState (avec $GUI_HIDE/SHOW) ou GUICtrlDelete.

Cdlt, FireFox.

Re: [..] Remplacement d'un label par une combo apres refresh

Posté : lun. 23 sept. 2013 14:12
par hardfloor
Oui les 2 tab sont necessaires!

Car dans mon code, le bouton "modifier" se trouve dans le premier onglet et doi modifier une listview Et le texte de 3 onglets.
Donc j'arrive bien a rafraichir les données des tableaux(qui se trouvent dans 3 onglets) avec un seul bouton, mais pas changer le texte^^

Dans mon exemple c'est le texte "inactif" qui doit se changer en combobox apres le rafraichissement.

Re: [..] Remplacement d'un label par une combo apres refresh

Posté : lun. 23 sept. 2013 14:15
par FireFox
Pour moi c'est pas assez clair, il me faudrait plus de détails: quel contrôle modifier (par sa variable si plusieurs contrôles du même type, remplacer quel contrôle par lequel, ...

Cdlt, FireFox.

Re: [..] Remplacement d'un label par une combo apres refresh

Posté : lun. 23 sept. 2013 14:23
par hardfloor
Bon du coup je ne sais pas comment etre plus clair :(

Je veux juste que mon texte " inactif" qui est ecrit en rouge (qui se trouve dans le 2ième onglet) devienne une combobox lorsque l'on a préssé le bouton "modifier" du premier onglet.

Re: [..] Remplacement d'un label par une combo apres refresh

Posté : lun. 23 sept. 2013 14:41
par FireFox
Ca l'est déjà plus.

Je ne sais pas si tu veux vraiment re-créer un combobox ou le modifier.

J'ai modifié un peu le code de la GUI car selon le cas c'était soit le label soit la combobox qui était créé.
► Afficher le texte
Cdlt, FireFox.

Re: [..] Remplacement d'un label par une combo apres refresh

Posté : lun. 23 sept. 2013 14:46
par hardfloor
Bon alors le code est plus clair, la combo apparait bien, mais le hic c'est que l'on en recrée une! Donc elle s'affiche aussi dans l'onglet 1. il ne faut pas qu'elle apparaisse dans le premier onglet. :wink:

Re: [..] Remplacement d'un label par une combo apres refresh

Posté : lun. 23 sept. 2013 14:49
par FireFox
D'où ma précédente interrogation, veux-tu la déplacer ou la cacher et en créer une autre?

Cdlt, FireFox.

Re: [..] Remplacement d'un label par une combo apres refresh

Posté : lun. 23 sept. 2013 15:15
par hardfloor
Je veux simplement que

SI le resultat du ini est "inactif" ==> le texte inactif rouge apparait et pas le combo

Si le resultat du ini est diférrent de "inactif" ==> je veux que mon combobox apparait à la place du texte

lorque l'on presse "modifier" le "inactif" rouge doit disparaitre et laisser place au combo
Mais le combo ne doit pas etre ailleurs que dans l'onglet 2!

Apres si tu dois en recrée une pour les besoin du code, peu importe, du moment que le combo apparait uniquement dans l'onglet 2.

Re: [..] Remplacement d'un label par une combo apres refresh

Posté : lun. 23 sept. 2013 15:16
par FireFox
Si j'ai bien compris ça doit donner:
► Afficher le texte
Cdlt, FireFox.

Re: [..] Remplacement d'un label par une combo apres refresh

Posté : lun. 23 sept. 2013 15:21
par hardfloor
Voilà^^ :mrgreen: :mrgreen:

Un grand merci à toi et à ta patience!! :wink:
Bon va falloir que je m'habitue à manipuler GUICtrlSetState() ca reduit pas mal les lignes de codes^^

Merci bien, sujet résolu :mrgreen: