[R] Récupérer la valeur d'un item d'une ListView.

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
matcarto
Niveau 2
Niveau 2
Messages : 16
Enregistré le : dim. 14 août 2011 11:52
Status : Hors ligne

[R] Récupérer la valeur d'un item d'une ListView.

#1

Message par matcarto »

Bonjour à tous, :)

Je bloque en ce moment sur un script qu'on m'a demandé de réaliser... :(

Il affiche une ListView où sont listés des prénoms provenant d'un fichier texte. J'aimerais que, lors de la sélection, un label prenne la valeur de l'item sélectionné.
Malheureusement, avec mon code, il n'y a que des nombres qui s'affichent. :(

Screen :

Image

Je vous joins mon code et la liste des prénoms. ;)

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <TabConstants.au3>
#include <ListViewConstants.au3>
#NoTrayIcon

#Region ### START Koda GUI section ###
Global $Form1 = GUICreate("Gestionnaire", 819, 520, 192, 124)
Global $Tab = GUICtrlCreateTab(8, 8, 802, 504)
GUICtrlSetFont(-1, 10, 400, 0, "Tahoma")

Global $tab1 = GUICtrlCreateTabItem("Test") ;Premier Onglet
$List = GUICtrlCreateListView("Prénom", 50, 60, 300, 380) ;Création de la liste
GUICtrlSendMsg($List, $LVM_SETCOLUMNWIDTH, 0, 768)
$file = FileOpen("Liste.txt", 0)
Dim $LineTab[1] ; on crée un tableau pour stocker les lignes
$LineNb = 0
While 1 ; donc on fait une boucle
   $line = FileReadLine($file) ; ou on lit une ligne
   If @error = -1 Then ExitLoop ; si y a une erreur c'est qu'on est a la fin du fichier
   If $line <> "" Then
      $LineNb = $LineNb + 1 ; on incrémente le compteur
      ReDim $LineTab[$LineNb + 1] ; comme on ne sait pas combien il y a de lignes, on redimentionne le tableau ou on les stocke
      $LineTab[$LineNb] = GUICtrlCreateListViewItem($line, $List) ; et on injecte la ligne dans la liste
   EndIf
WEnd

Global $Label14 = GUICtrlCreateLabel("Elève :", 384, 60, 52, 23)
GUICtrlSetFont(-1, 12, 400, 0, "Tahoma")
Global $Label15 = GUICtrlCreateLabel("", 464, 61, 162, 22) ;Création du label prenant le nom de l'élève
GUICtrlSetFont(-1, 12, 400, 0, "Tahoma")

GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

List() ;Apelle de la fonction détectant la selection d'un item de la liste

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit
 EndSwitch
WEnd


Func List()
Local $selection = 0
Local $prenomliste

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

$selection = GUICtrlRead($List) ;On lit l'item sélectionné
If $selection <> 0 Then ;On vérifie qu'il ait bien sélection
    If $selection <> $prenomliste Then ;On regarde si la selection a changée (pour ne pas faire clignoter le label)
    GUICtrlSetData($Label15,$selection) ;On applique la valeur de l'item au label15
    $prenomliste = $selection ;On met a jour la valeur de la selection précédente
    EndIf
EndIf
WEnd
Endfunc
Je pense que mon code doit contenir un certain nombre d'erreur mais je suis encore très débutant. :lol:

Merci d'avance. :)
Fichiers joints
Liste.txt
Liste des prénoms.
(209 Octets) Téléchargé 183 fois
Modifié en dernier par matcarto le ven. 26 août 2011 18:27, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Récupérer la valeur d'un item d'une ListView.

#2

Message par Tlem »

Il existe sur le forum, de nombreux code qui utilisent des ListViews, dont certains font exactement ce que vous recherchez.
Pourquoi ne pas vous en inspirer ?
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
matcarto
Niveau 2
Niveau 2
Messages : 16
Enregistré le : dim. 14 août 2011 11:52
Status : Hors ligne

Re: [..] Récupérer la valeur d'un item d'une ListView.

#3

Message par matcarto »

Merci de votre réponse. :)

J'ai déjà fait de nombreuses recherches mais peut-être que je n'utilisais pas les bons mots-clés... :(
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Récupérer la valeur d'un item d'une ListView.

#4

Message par Tlem »

Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Récupérer la valeur d'un item d'une ListView.

#5

Message par mikell »

Et on se tape un include<GuiListView.au3> de 350 Ko et 7700 lignes (sans compter les sous-includes...) ^^

Marrant, personne pense jamais à ça :

Code : Tout sélectionner

$selection = GUICtrlRead($List) ;On lit l'item sélectionné
If $selection <> 0 Then ;On vérifie qu'il ait bien sélection
    If $selection <> $prenomliste Then ;On regarde si la selection a changée (pour ne pas faire clignoter le label)
[color=#FF0000]      $index = ControlListView("Gestionnaire", "", $List, "GetSelected")
     $item = ControlListView("Gestionnaire", "", $List, "GetText", $index)[/color]
     GUICtrlSetData($Label15,[color=#FF0000]$item[/color]) ;On applique la valeur de l'item au label15
     $prenomliste = $selection ;On met a jour la valeur de la selection précédente
   EndIf
EndIf
 
EDIT
La vache... je viens de compter, pour l'include<GuiListView.au3> + ses sous-includes, on dépasse 1 Mo
ça fait peur :mrgreen:
Modifié en dernier par mikell le ven. 26 août 2011 18:39, modifié 1 fois.
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
matcarto
Niveau 2
Niveau 2
Messages : 16
Enregistré le : dim. 14 août 2011 11:52
Status : Hors ligne

Re: [..] Récupérer la valeur d'un item d'une ListView.

#6

Message par matcarto »

mikell a écrit :Et on se tape un include<GuiListView.au3> de 350 Ko et 7700 lignes (sans compter les sous-includes...) ^^

Marrant, personne pense jamais à ça :

Code : Tout sélectionner

$selection = GUICtrlRead($List) ;On lit l'item sélectionné
If $selection <> 0 Then ;On vérifie qu'il ait bien sélection
    If $selection <> $prenomliste Then ;On regarde si la selection a changée (pour ne pas faire clignoter le label)
[color=#FF0000]      $index = ControlListView("Gestionnaire", "", $List, "GetSelected")
     $item = ControlListView("Gestionnaire", "", $List, "GetText", $index)[/color]
     GUICtrlSetData($Label15,[color=#FF0000]$item[/color]) ;On applique la valeur de l'item au label15
     $prenomliste = $selection ;On met a jour la valeur de la selection précédente
   EndIf
EndIf
 

Merci beaucoup !!!!! :)

Sujet résolue. ;)
Répondre