Problème ListViewItem qui s'efface

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Benso
Niveau 2
Niveau 2
Messages : 16
Enregistré le : mar. 06 déc. 2016 11:57
Status : Hors ligne

Problème ListViewItem qui s'efface

#1

Message par Benso »

Bonjour à tous !

J'ai comme qui dirait un soucis ^^
J'ai un fait un petit programme qui ouvre une Gui , comportant une combobox de nombres , et un bouton OK pour activer une fonction d'affichage de 3 listview dans la meme GUI .

Lorsque je lance mon programme et que je choisi pour la première fois un nombre dans la liste déroulante , l'affichage dans mes ListView se fait correctement. Mais lorsque je choisis un deuxième nombre dans ma liste déroulante et ensuite -> bouton OK , l'affichage des données se fait également bien dans mes listView cependant lorsque je clique sur un item ( pour juste le mettre en surbrillant bleu) , ou que je scroll sur mon listView les données s'effacent .

Le contenu de mes listView , je vais le chercher depuis un fichier txt
Chaque cases des items de mes listview est une variable déclarée en global avant la déclaration de ma fonction.
Mon code étant très conséquent , je vous montre l'essentiel

Mon bouton Ok :
$verification = GUICtrlCreateButton("OK",530,10,50,25)
GUICtrlSetOnEvent($verification, "Verification")
Ma fonction Verification :
Func Verification()
$CaseitemAa = ""
$CaseitemAb = "" ; je vide mes cases à chaque appel de la fonction ( car elles ne se remplissent pas toute selon le nbre choisi)
;il ya d'autre variable du meme style

$ChoixNombre = GUICtrlRead($NGrp, 1) ; retourne le numero choisi dans la liste déroulante
For $i = 1 To UBound($aArray) - 1 ; boucle pour parcourir mon fichier text
if ((($aArray[$i])[3])="A" ) And $ChoixNombre = ($aArray[$i])[0] Then
   $CaseitemAa = ($aArray[$i])[4]
   $CaseitemAb=($aArray[$i])[5]
   $CaseitemAc=($aArray[$i])[6]
ElseIf ((($aArray[$i])[3]) = "B") And $ChoixNombre = ($aArray[$i])[0] Then
  $CaseitemBa = ($aArray[$i])[4]
  $CaseitemBb = ($aArray[$i])[5]
  $CaseitemBc = ($aArray[$i])[6]
ElseIf ((($aArray[$i])[3]) = "C") And $ChoixNombre = ($aArray[$i])[0] Then; et ainsi de suite.....

EndIf
Next; fin boucle for

; Création de mes listview :
;ListeView A

Global $idListview = GUICtrlCreateListView("Col1|Col2|Col3|Col4|Col5|Col6", 25, 190, 600, 130)
Global $idItem1 = GUICtrlCreateListViewItem("Du texte :|"& $CaseitemAa & "|"& $CaseitemAb & "|"& $CaseitemAc & "|"& $CaseitemAd & "|"& $CaseitemAe & "",$idListview) ; Exemple de ligne pareil pour les autres items et listviews
EndFunc
j'ai l'impression que lorsque j'appelle une deuxieme fois ma fonction , le contenu de mes listview n'est pas effacé et remplacé , mais superposé et le contenu s'efface pour réaffiche le précédent, lorsque je passe ma souris dessus , scroll ou clique sur un items , en gros des que je fait une action sur le listView.... Si ca peut aider
J'espère avoir été compréhensible dans le cas contraire je vous donnerai plus d'informations.

Merci de votre aide!
Modifié en dernier par Benso le jeu. 15 déc. 2016 10:43, modifié 2 fois.
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: Problème ListViewItem qui s'efface

#2

Message par Hugues »

Salut,

Tout d'abord essaye de déclarer tes variables Globale en début de programme.

Ensuite, je pense que ton erreur doit venir d'ici:
Global $idListview = GUICtrlCreateListView("Col1|Col2|Col3|Col4|Col5|Col6", 25, 190, 600, 130)
A mon avis, il faut déclarer ta ListView dans ton GUI et non dans ta fonction Verification()...

Un exemple vite fait:
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>

Global $Form1, $NGrp, $CaseitemAa, $CaseitemAb, $CaseitemAc, $CaseitemAd, $CaseitemAe, $ChoixNombre, $idListview, $idItem1
Global $aArray


$Form1 = GUICreate("Form1", 615, 437, 192, 124)
$NGrp = GUICtrlCreateCombo("", 16, 8, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData($NGrp, "1|2|3|4|5|6|7|8|9|10")
$idListview = GUICtrlCreateListView("Col1|Col2|Col3|Col4|Col5|Col6", 10, 100, 500, 130)

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

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

Func Verification()
    ;$CaseitemAa = ""
    ;$CaseitemAb = "" ; je vide mes cases à chaque appel de la fonction ( car elles ne se remplissent pas toute selon le nbre choisi)
    ;il ya d'autre variable du meme style

    $ChoixNombre = GUICtrlRead($NGrp, 1) ; retourne le numero choisi dans la liste déroulante
   ;MsgBox(32, "", $ChoixNombre)

   Dim $aArray[10][10]
   For $i = 0 To 9
      For $j = 0 To 9
         $aArray[$i][$j] = $i
      Next
   Next

    For $i = 1 To UBound($aArray) - 1 ; boucle pour parcourir mon fichier text
      If $aArray[$i][3]="1" And $ChoixNombre = $aArray[$i][0] Then
         $CaseitemAa = $aArray[$i][4]
         $CaseitemAb = $aArray[$i][5]
         $CaseitemAc = $aArray[$i][6]
      ElseIf $aArray[$i][3] = "2" And $ChoixNombre = $aArray[$i][0] Then
         $CaseitemBa = $aArray[$i][4]
         $CaseitemBb = $aArray[$i][5]
         $CaseitemBc = $aArray[$i][6]
      ElseIf $aArray[$i][3] = "5" And $ChoixNombre = $aArray[$i][0] Then; et ainsi de suite.....
      EndIf
    Next; fin boucle for

      $idItem1 = GUICtrlCreateListViewItem("Du texte :|" & $CaseitemAa & "|" & $CaseitemAb & "|" & $CaseitemAc & "|" & $CaseitemAd & "|" & $CaseitemAe & "", $idListview)
s


EndFunc
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Problème ListViewItem qui s'efface  

#3

Message par mikell »

A mon avis, il faut déclarer ta ListView dans ton GUI
Yes, et les items aussi
Ensuite mettre à jour les items dans la fonction avec GUICtrlSetData
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Benso
Niveau 2
Niveau 2
Messages : 16
Enregistré le : mar. 06 déc. 2016 11:57
Status : Hors ligne

Re: Problème ListViewItem qui s'efface

#4

Message par Benso »

Merci je vais essayer d'appliquer vos conseils , je reviens vers vous dès que ce sera fait.

Edit : La vache ce que vous êtes forts ! Mon problème venait de mes déclarations d'items que je faisais dans ma fonction !
Problème Résolu ! Merci Beaucoup.

Passez de bonnes fêtes !
Répondre