[R] Contenu présent dans toutes les "tabs" après une boucle

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
hardfloor
Niveau 4
Niveau 4
Messages : 69
Enregistré le : mer. 31 juil. 2013 09:37
Status : Hors ligne

[R] Contenu présent dans toutes les "tabs" après une boucle

#1

Message par hardfloor »

Bonjour les amis,
Alors voilà mon probleme:
J'ai donc une gui unique avec 8 tabs . dans la "tabs 1" j'ai mis un label et un input et dans la tabs 2 j'ai créé une listwiew et rien dans les autres.
J'ai crée une fonction "refresh" pour recharger le tableau lorsque l'on rentre des nouvelles données.
mon probleme vient de là, lorsque la boucle effectue la lecture du fichier ini, le tableau se fige dans tous les tabs !
C'est à dire que je ne vois plus le contenu du premier tabs ou d'un autre. Il s'affiche par dessus le reste partout.

Je vous ai recréé la situation:

Code : Tout sélectionner

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#Include <GuiListView.au3>
Local $read1
call("_Read")
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 421, 192, 124)
$Tab1 = GUICtrlCreateTab(0, 0, 617, 41)
$TabSheet1 = GUICtrlCreateTabItem("TabSheet1")

$Input1 = GUICtrlCreateInput("Input1", 80, 88, 129, 21)
$Label1 = GUICtrlCreateLabel("Label1", 32, 88, 36, 17)
$TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
$Input2 = GUICtrlCreateInput("Rempli colonne 3", 80, 250, 129, 21)
$Label2 = GUICtrlCreateLabel("Label1", 20, 250, 36, 17)
$hListView = GuiCtrlCreateListView("Colonne 1", 20, 50, 500 ,180, -1, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
GUICtrlSetFont($hListView,7,400,"Times New Roman")
GUICtrlSetBkColor($hListView, 0xEE6AA7)
    ; Add columns
    _GUICtrlListView_AddColumn ($hListView,  "Colonne 2", 100, 2)
    _GUICtrlListView_AddColumn ($hListView,  "Colonne 3", 100, 2)
    ; Add some rows
    _GUICtrlListView_AddItem($hListView, "bizarre", 0)

    _GUICtrlListView_AddSubItem($hListView, 0, "test", 1)

    _GUICtrlListView_AddSubItem($hListView, 0, $read1, 2)
    $b1 = GUICtrlCreateButton("Enregistrer", 20, 300, 300, 50)
;~  GUICtrlCreateButton(
$TabSheet3 = GUICtrlCreateTabItem("TabSheet3")
$TabSheet4 = GUICtrlCreateTabItem("TabSheet4")
$TabSheet5 = GUICtrlCreateTabItem("TabSheet5")
$TabSheet6 = GUICtrlCreateTabItem("TabSheet6")
$TabSheet7 = GUICtrlCreateTabItem("TabSheet7")
$TabSheet8 = GUICtrlCreateTabItem("TabSheet8")
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $b1
            $file = ("conf_test.ini")
            $ecrire = GUICtrlRead($input2)
            IniWrite($file, "section1", "colonne 1", $ecrire)
_Read_Auto()
    EndSwitch
WEnd
Func _Read()
    $file = ("conf_test.ini")
    $read1 = IniRead($file, "section1", "colonne 1", "")
    EndFunc

Func _Read_Auto()
    $file = ("conf_test.ini")
    for $i= 1 to 2
            $read1 = IniRead($file, "section1", "colonne 1", "")
        Next
        $hListView = GuiCtrlCreateListView("Colonne 1", 20, 50, 500 ,180, -1, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
GUICtrlSetFont($hListView,7,400,"Times New Roman")
GUICtrlSetBkColor($hListView, 0xEE6AA7)
    ; Add columns
    _GUICtrlListView_AddColumn ($hListView,  "Colonne 2", 100, 2)
    _GUICtrlListView_AddColumn ($hListView,  "Colonne 3", 100, 2)
    ; Add some rows
    _GUICtrlListView_AddItem($hListView, "bizarre", 0)

    _GUICtrlListView_AddSubItem($hListView, 0, "test", 1)

    _GUICtrlListView_AddSubItem($hListView, 0, $read1, 2)
        EndFunc
 
Qu'ai_ je mal fait?
Merci pour votre aide :wink:
Modifié en dernier par hardfloor le lun. 09 sept. 2013 17:01, modifié 1 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..]Contenu présent dans toutes les "tabs" après une bou

#2

Message par jguinch »

Dans ta fonction _Read_Auto(), tu crées une listview (donc à chaque fois qu'on clique sur Enregistrer). Elle se crée en dehors des onglets, donc par dessus tout le reste.

Ce qu'il faudrait faire, c'est utiliser la listview existante, la vider puis la remplir.
Tu peux supprimer le contenu avec _GUICtrlListView_DeleteAllItems.
Ensuite, reste à lire tes valeurs dans le fichier INI et alimenter la listview
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
hardfloor
Niveau 4
Niveau 4
Messages : 69
Enregistré le : mer. 31 juil. 2013 09:37
Status : Hors ligne

Re: [..]Contenu présent dans toutes les "tabs" après une bou

#3

Message par hardfloor »

Hello :wink:

Merci à toi, je vais essayer ça de suite et je reposte le script corrigé!
hardfloor
Niveau 4
Niveau 4
Messages : 69
Enregistré le : mer. 31 juil. 2013 09:37
Status : Hors ligne

Re: [..]Contenu présent dans toutes les "tabs" après une bou

#4

Message par hardfloor »

Bon je galère à trouver la solution.
Et _GUICtrlListView_DeleteAllItems ne fonctionne pas!
J'ai essayé les exemples de la doc et j'en ai mis un dans mon script.et là ca marche plus^^

Pourrais tu me montrer ce que ca donne stp
hardfloor
Niveau 4
Niveau 4
Messages : 69
Enregistré le : mer. 31 juil. 2013 09:37
Status : Hors ligne

Re: [..]Contenu présent dans toutes les "tabs" après une bou

#5

Message par hardfloor »

Alors j'ai trouvé une partie de la solution!

Code : Tout sélectionner

Case $b1

            $file = ("conf_test.ini")
            $ecrire = GUICtrlRead($input2)
            IniWrite($file, "section1", "colonne 1", $ecrire)
            _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($hListView))
            _Read()
 
Là ca me le vide bien! Le probleme venait que j'utilisais _GUICtrlListView_DeleteAllItems($hListView) .
Apres je relis le ini et apres je bloque pour recharger le tableau sans en refaire un!
hardfloor
Niveau 4
Niveau 4
Messages : 69
Enregistré le : mer. 31 juil. 2013 09:37
Status : Hors ligne

Re: [..]Contenu présent dans toutes les "tabs" après une bou

#6

Message par hardfloor »

A y'est !! J'ai trouvé :)

Donc la partie du boutton

Code : Tout sélectionner

Case $b1

            $file = ("conf_test.ini")
            $ecrire = GUICtrlRead($input2)
            IniWrite($file, "section1", "colonne 1", $ecrire)
            _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($hListView))
            _Read_Auto()
 
et la fonction

Code : Tout sélectionner

Func _Read_Auto()
    $file = ("conf_test.ini")
    for $i= 1 to 2
       $read1 = IniRead($file, "section1", "colonne 1", "")
      Next
     _GUICtrlListView_AddItem($hListView, "bizarre", 0)
     _GUICtrlListView_AddSubItem($hListView, 0, "test", 1)
     _GUICtrlListView_AddSubItem($hListView, 0, $read1, 2)
 EndFunc
 
Si il y avait une autre façon de faire, je suis preneur!
Répondre