Page 1 sur 1

[R] Couleur texte dans GUICtrlCreateInput

Posté : jeu. 16 déc. 2010 13:44
par Laddy
Bonjour
je voudrais savoir si il est possible de changer la couleur du texte affiché par GUICtrlSetData dans une GUICtrlCreateInput ?
J'ai cherché sur le forum, mes mots clés sont trop génériques.

L'aide de autoit ne me donne pas mieux.

J'ai tenté de mettre : GUICtrlSetColor(-1, 0xff0000) ; Red
Mais cela agit uniquement sur les labels de la GUI, ce qui est logique.

http://www.imabox.fr/upload/1015121548g ... 7ufR42.png

Merci d'avance.

Laddy

Re: [..] Couleur texte dans GUICtrlCreateInput

Posté : jeu. 16 déc. 2010 13:48
par zeshrek
Comme je sais pas si tu veux mettre le texte ou le fond de l'input box en couleur, je te donne les deux :

Code : Tout sélectionner

$Input1 = GUICtrlCreateInput("Input1", 100, 100, 100, 20)
GUICtrlSetColor(-1, 0xFF0000) ; couleur du texte en rouge
GUICtrlSetBkColor(-1, 0xFFFF00) ; couleur du fond de l'input en jaune
Chez moi ca marche tres bien...

Re: [..] Couleur texte dans GUICtrlCreateInput

Posté : jeu. 16 déc. 2010 13:58
par Laddy
Bonjour Zeshrek
en fait je veux changer la couleur du texte dans l'input en fonction du résultat lu.

En vert lorsque c'est noté yes
en rouge lorsque c'est noté no.

J'avais fait ceci

Code : Tout sélectionner


$Valid = GUICtrlCreateInput("", 376, 184, 177, 21)

IF $String2= "yes" then
GUICtrlSetColor(-1, 0x00ff00)   ; green
GUICtrlSetData($Valid,$String2)
Else
GUICtrlSetColor(-1, 0xff0000)   ; Red
GUICtrlSetData($Valid,$String2)
EndIf
Mais apparemment je m'y prend mal

Re: [..] Couleur texte dans GUICtrlCreateInput

Posté : jeu. 16 déc. 2010 14:17
par zeshrek
Heuuuu... d'ou vient $string2 ? Parceque sur le bout de code que tu donnes, on voit pas comment cette variable est initialisée...
De plus, si la valeur de $string2 est "Yes" ou "YES" la condition ne sera pas validée, a cause des majuscules. Fais plutot ton test en forcant le tout en majuscules (ou en minuscules) :

Code : Tout sélectionner

IF StringUpper($String2)= "YES" then

Re: [..] Couleur texte dans GUICtrlCreateInput

Posté : jeu. 16 déc. 2010 14:26
par Laddy
Oh oui pardon.


$String provient de l'extraction d'un fichier txt .
Source du sujet : http://autoitscript.fr/forum/viewtopic.php?f=3&t=6456

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>

$Gui = GUICreate("GUI", 588, 356, 506, 332)
$BrowseSource = GUICtrlCreateButton("Parcourir...", 496, 48, 65, 25)
$SourceFile = GUICtrlCreateInput("", 120, 48, 369, 21)
$Valid = GUICtrlCreateInput("", 376, 184, 177, 21)
GUISetState(@SW_SHOW)

Global $SunVirtualBox = RegRead("HKEY_LOCAL_MACHINE\Software\Sun\VirtualBox", "InstallDir")
Global $OracleVirtualBox = RegRead("HKEY_LOCAL_MACHINE\Software\Oracle\VirtualBox", "InstallDir")

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $BrowseSource
            BrowseSrc()
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd

Func BrowseSrc()
Local $ListInfo = "InfoSourceVDI.txt"
Local $message = "Selectionne la source de ton fichier VDI."
Local $var = FileOpenDialog($message, @DesktopDir & "\", "Fichiers VirtualBox (*.vdi)", 1)
GUICtrlSetData($SourceFile,$var)
IniWrite( @ScriptDir &"\CloneVDIinfo.ini","parametres","Source",GUICtrlRead($SourceFile))
$IniSource = IniRead(@ScriptDir &"\CloneVDIinfo.ini", "parametres", "Source", "NotFound")
RunWait(@ComSpec & ' /c "' &$SunVirtualBox&'VBoxManage.exe"' &" showhdinfo " &$IniSource &" > " &$ListInfo, "", @SW_HIDE)
$file = FileOpen("InfoSourceVDI.txt", 0)
While 1
    $Line = FileReadLine($file)
    If @error Then ExitLoop
    If StringLeft($Line, 5) = "UUID:" Then $String1 = StringTrimLeft($Line,5)
    If StringLeft($Line, 11) = "Accessible:" Then $String2 = StringTrimLeft($Line,11)
    If StringLeft($Line, 13) = "Logical size:" Then $String3 = StringTrimLeft($Line,13)
WEnd
FileClose ($file)
GUICtrlSetData($Valid,$String2)

EndFunc
 

Re: [..] Couleur texte dans GUICtrlCreateInput

Posté : jeu. 16 déc. 2010 14:44
par zeshrek
Bin, cherche pas !
ta chaine a l'origine c'est Accessible: yes
Tu enleves les 11 caracteres de gauche avec $String2 = StringTrimLeft($Line, 11)

bon, compte les caracteres de la chaine, et tu veras que ce que tu gardes apres cette découpe c'est {espace}yes
Il faudrait alors que tu fasses un

Code : Tout sélectionner

$String2 = StringTrimLeft($Line, 1[color=#FF0000]2[/color])
pour enlever l'espace qui précede 'yes'

D'ou l'utilité de bien poser les questions quand on demande qqchose, parceque ta demande c'était "je veux uniquement la partie après les :"
Du coup, le coupage s'est fait apres les ':' alors qu'il aurait fallu le faire apres l'espace qui suit les ':'

Du coup c'est aussi surement valable pour les 2 autres $String, donc les 3 lignes deviennent :

Code : Tout sélectionner

    If StringLeft($Line, 5) = "UUID:" Then $String1 = StringTrimLeft($Line,[color=#FF0000][b]6[/b][/color])
    If StringLeft($Line, 11) = "Accessible:" Then $String2 = StringTrimLeft($Line,1[color=#FF0000][b]2[/b][/color])
    If StringLeft($Line, 13) = "Logical size:" Then $String3 = StringTrimLeft($Line,1[color=#FF0000][b]4[/b][/color])

Re: [..] Couleur texte dans GUICtrlCreateInput

Posté : jeu. 16 déc. 2010 14:55
par Laddy
oK j'ai compris merci pour les explications,
et pour modifier la couleur du texte dans mon GuiCtrlCreateInput en fonction du resultat yes (en vert), no (en rouge) c'est possible ou non ?

Re: [..] Couleur texte dans GUICtrlCreateInput

Posté : jeu. 16 déc. 2010 14:56
par bloodwolff
C'est possible !

Re: [..] Couleur texte dans GUICtrlCreateInput

Posté : jeu. 16 déc. 2010 14:57
par zeshrek
oui c'est possible et ton code de tout a l'heure devrait du coup etre bon, avec juste la gestion des majuscules (au cas ou) ce qui donne :

Code : Tout sélectionner

$Valid = GUICtrlCreateInput("", 376, 184, 177, 21)
IF StringUpper($String2)= "YES" then
GUICtrlSetColor(-1, 0x00ff00)   ; green
GUICtrlSetData($Valid,$String2)
Else
GUICtrlSetColor(-1, 0xff0000)   ; Red
GUICtrlSetData($Valid,$String2)
EndIf
 

Re: [..] Couleur texte dans GUICtrlCreateInput

Posté : jeu. 16 déc. 2010 15:16
par Laddy
Blop,
J'ai ajouté ton code dans ma fonction, et le résultat apparait toujours en rouge alors que cela devrait être vert.
serait ce le if qui me jouerait un tour ?

fichier txt :
Sun VirtualBox Command Line Management Interface Version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.

UUID: 67ae883d-8859-4191-8c61-024949344a15
Accessible: yes
Description:
Logical size: 7860 MBytes
Current size on disk: 0 MBytes
Type: normal (base)
Storage format: VMDK
In use by VMs: aspireoneusb (UUID: 39306fe5-93fa-4999-81a9-447e7f6673ac)
Location: F:\usb.vdi

Re: [..] Couleur texte dans GUICtrlCreateInput

Posté : jeu. 16 déc. 2010 15:19
par zeshrek
Gnîîî ???? Y doit y avoir un bug qqpart.
Donc pour débuger, on va voir ce que ca donne avec une petite msgbox a insérer apres le else :

Code : Tout sélectionner

msgbox(0,"","*"&$String2&"*"&@CRLF&StringLen($String2))
Si la msgbox t'affiche
*yes*
3

c'est que le if pose probleme, sinon, c'est la facon dont tu obtiens $String2

Re: [..] Couleur texte dans GUICtrlCreateInput

Posté : jeu. 16 déc. 2010 15:27
par Laddy
Voici le résultat :


Image

Re: [..] Couleur texte dans GUICtrlCreateInput

Posté : jeu. 16 déc. 2010 15:36
par zeshrek
Il y a donc 10 espaces de trop, qu'il va falloir supprimer.
Tu peux soit agir sur les StringTrimLeft qui servent a definir $String2 (et probablement aussi $String1 & $String3), soit utiliser

Code : Tout sélectionner

StringReplace($String2, " ", "")
juste avant le if

Re: [..] Couleur texte dans GUICtrlCreateInput

Posté : jeu. 16 déc. 2010 15:55
par Laddy
Dans mon exemple ça fonctionne.
J'ai modifié :

Code : Tout sélectionner

If StringLeft($Line, 11) = "Accessible:" Then $String2 = StringTrimLeft($Line,22)
mais si j'ajoute le code dans la gui complète, c'est mon bouton Quitter qui est vert ?? pourquoi ? :shock:
Qu'est ce que j'ai fait de faux ?
On dirait que la couleur est appliquée sur la derniere ligne de la Gui.


Image

Re: [..] Couleur texte dans GUICtrlCreateInput

Posté : jeu. 16 déc. 2010 16:29
par zeshrek
C'est normal, dans ton code :

Code : Tout sélectionner

IF StringUpper($String2) = "yes" then
GUICtrlSetColor([color=#FF0000][b]-1[/b][/color], 0x00ff00)   ; green
GUICtrlSetData($Valid,$String2)
Else
;msgbox(0,"","*"&$String2&"*"&@CRLF&StringLen($String2))
GUICtrlSetColor([color=#FF0000][b]-1[/b][/color], 0xff0000)   ; Red
GUICtrlSetData($Valid,$String2)
EndIf
 
les '-1' indiquent d'affecter le parametre au dernier controle utilisé.
Il faut donc modifier le code en lui indiquant a quel controle tu veux acceder comme ca:

Code : Tout sélectionner

IF StringUpper($String2) = "yes" then
GUICtrlSetColor([color=#FF0000][b]$Valid[/b][/color], 0x00ff00)   ; green
GUICtrlSetData($Valid,$String2)
Else
;msgbox(0,"","*"&$String2&"*"&@CRLF&StringLen($String2))
GUICtrlSetColor([color=#FF0000][b]$Valid[/b][/color], 0xff0000)   ; Red
GUICtrlSetData($Valid,$String2)
EndIf
 

Re: [..] Couleur texte dans GUICtrlCreateInput

Posté : jeu. 16 déc. 2010 16:46
par Laddy
Arf c'est les petits trucs que je ne piges pas tout le temps dans la documentation.
Merci de m'avoir consacré du temps je vais pouvoir poursuivre et m'attaquer à a fonction de clonage.

Je vais abuser avant t'ouvrir un autre sujet mais la ligne de commande que j'utilise affiche un pourcentage sur l'avancer du clonage penses tu qu'il est soit possible de faire une "progressbar graphique" qui fasse la même choses ?

Image

Re: [..] Couleur texte dans GUICtrlCreateInput

Posté : jeu. 16 déc. 2010 18:27
par Colin117
Oui tu peux bien évidemment. regarde du coté de GUICtrlCreateProgress

Re: [R] Couleur texte dans GUICtrlCreateInput

Posté : ven. 17 déc. 2010 08:33
par Laddy
Merci
je ne suis pas encore au point arf ma fonction de clonage ne passe pas erreur de syntaxe problème avec le Switch
je vais essayer de trouver mon erreur et si jamais j'ouvrirai un autre sujet.

Bonne journéé
Laddy