Page 1 sur 1
[R] Ligne en couleur Listbox
Posté : jeu. 05 juin 2014 17:34
par Andranik
Bonjour,
Je poursuit mon petit code pour créer une Listbox a partir d'un fichier...
Mais je veux rajouter une condition ...
Voilà a quoi ressemble le fichier texte :
$ville Separateur $id
Paris @tab 123456789
Lyon @tab 456789123
Marseille @tab
Montpellier @tab 147852369
ect... @tab 852147963
Si $id est vide alors la ligne dans Listbox est rouge
Si non
elle est de couleur par défaut.
Voici le code :
► Afficher le texte
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListview.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#Include <Array.au3>
#include <MsgBoxConstants.au3>
#include <GUIConstants.au3>
$Form1 = GUICreate("Form1", 511, 636, 192, 124)
$Label1 = GUICtrlCreateLabel("Info ID", 64, 24, 396, 97)
$List1 = GUICtrlCreateList("", 32, 192, 345, 383)
GUICtrlSetColor(0, 0x528ED4)
$quit = GUICtrlCreateButton("Exit", 240, 584, 121, 41, $WS_GROUP)
GUICtrlSetColor(-1, 0x528ED4)
GUISetState(@SW_SHOW)
$Count= _FileCountLines("C:\temp\ids.txt")
Global $file = "C:\temp\ids.txt"
For $i = 1 To $Count
$var1 = FileReadLine($file, $i)
$res = StringSplit($var1,@TAB)
Global $namag = $res[1]
Global $id = $res[2]
if $id = "" Then
_GUICtrlListBox_AddString($List1, $res[1])
GuiCtrlSetColor($List1, 0xff0000)
Else
_GUICtrlListBox_AddString($List1, $res[1])
EndIf
Next
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $quit
Exit
EndSwitch
WEnd
Merci pour votre aide !!!
Re: [..] Ligne en couleur Listbox
Posté : jeu. 05 juin 2014 18:29
par blacksoul305
Bonsoir,
j'ai apporté plusieurs modifications à votre script.
► Afficher le texte
Code : Tout sélectionner
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.10.2
Author: myName
#include <ColorConstants.au3>
#include <EditConstants.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListview.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#Include <Array.au3>
#include <MsgBoxConstants.au3>
#include <GUIConstants.au3>
$Form1 = GUICreate("Form1", 511, 636, 192, 124)
$Label1 = GUICtrlCreateLabel("Info ID", 64, 24, 396, 97)
$List1 = GUICtrlCreateListView("Ville|ID", 32, 192, 345, 383)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 150)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 150)
GUICtrlSetColor(0, 0x528ED4)
$quit = GUICtrlCreateButton("Exit", 240, 584, 121, 41, $WS_GROUP)
GUICtrlSetColor(-1, 0x528ED4)
GUISetState(@SW_SHOW)
Global $file = "C:\temp\ids.txt", $Count = _FileCountLines($file), $fileHandle = FileOpen($file)
Global $temp, $line, $tempID
For $i = 1 To $Count
$line = FileReadLine($fileHandle, $i)
$temp = StringSplit($line,@TAB)
$tempID = GUICtrlCreateListViewItem($temp[1] & "|" & $temp[2],$List1)
If $temp[2] = "" Then
GUICtrlSetBkColor(-1,$COLOR_RED)
Else
GUICtrlSetBkColor(-1,$COLOR_GREEN)
EndIf
Next
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $quit
Exit
EndSwitch
WEnd
Premièrement, je me suis permis de modifier le nom de certaines variables mais ça ce n'est que moi, c'est une question de choix. En revanche j'ai opté pour une ListView, cela me semble bien plus approprié pour ce genre de chose et puis c'est plus simple à utiliser.
Ensuite, je pense qu'il n'est pas très utile d'ajouter autant d'includes. A moins que vous ne les utilisiez après, parce que cela rend votre programme bien plus lourd.
Maintenant pour la future utilisation du script, il serait bon de conserver les contrôles ($tempID) de chaque item ajouté à la ListView dans un tableau par exemple, afin de modifier aisément la ListView.
Je pense que c'est tout, bonne continuation !
Re: [..] Ligne en couleur Listbox
Posté : jeu. 05 juin 2014 18:31
par Andranik
Merci c'est exactement se que je voulait.
Si j'ai bien compris mon erreur été davoir utiliser "GUICtrlCreateList" a la place "GUICtrlCreateListView"
Merci pour votre aide !!!
Re: [R] Ligne en couleur Listbox
Posté : jeu. 05 juin 2014 18:33
par blacksoul305
C'est pas une erreur, disons que c'est plus simple !
Juste, ne citez pas mon message, cela encombre le forum, supprimez donc la citation en éditant le message.
Bon courage !