[R] Couleur texte dans GUICtrlCreateInput

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

[R] Couleur texte dans GUICtrlCreateInput

#1

Message 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
Modifié en dernier par Laddy le ven. 17 déc. 2010 08:31, modifié 1 fois.
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Couleur texte dans GUICtrlCreateInput

#2

Message 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...
Si vis pacem para bellum
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] Couleur texte dans GUICtrlCreateInput

#3

Message 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
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Couleur texte dans GUICtrlCreateInput

#4

Message 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
Si vis pacem para bellum
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] Couleur texte dans GUICtrlCreateInput

#5

Message 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
 
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Couleur texte dans GUICtrlCreateInput

#6

Message 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])
Si vis pacem para bellum
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] Couleur texte dans GUICtrlCreateInput

#7

Message 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 ?
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [..] Couleur texte dans GUICtrlCreateInput

#8

Message par bloodwolff »

C'est possible !
Compte skype : bloodwolfff
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Couleur texte dans GUICtrlCreateInput

#9

Message 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
 
Si vis pacem para bellum
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] Couleur texte dans GUICtrlCreateInput

#10

Message 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
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Couleur texte dans GUICtrlCreateInput

#11

Message 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
Si vis pacem para bellum
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] Couleur texte dans GUICtrlCreateInput

#12

Message par Laddy »

Voici le résultat :


Image
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Couleur texte dans GUICtrlCreateInput

#13

Message 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
Si vis pacem para bellum
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] Couleur texte dans GUICtrlCreateInput

#14

Message 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
Modifié en dernier par Laddy le jeu. 16 déc. 2010 16:38, modifié 1 fois.
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Couleur texte dans GUICtrlCreateInput

#15

Message 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
 
Si vis pacem para bellum
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] Couleur texte dans GUICtrlCreateInput

#16

Message 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
Colin117
Niveau 5
Niveau 5
Messages : 114
Enregistré le : jeu. 18 nov. 2010 17:57
Localisation : Vers là bas !
Status : Hors ligne

Re: [..] Couleur texte dans GUICtrlCreateInput

#17

Message par Colin117 »

Oui tu peux bien évidemment. regarde du coté de GUICtrlCreateProgress
► Afficher le texte
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [R] Couleur texte dans GUICtrlCreateInput

#18

Message 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
Répondre