[..] Insertion d'images automatiquement dans des onglets

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
veloleloup
Niveau 1
Niveau 1
Messages : 4
Enregistré le : dim. 07 nov. 2010 15:59
Status : Hors ligne

[..] Insertion d'images automatiquement dans des onglets

#1

Message par veloleloup »

Allo, j'ai un script avec 2 Gui. Lorsque j'appelle le deuxième Gui avec le bouton "Tab", il fait la création automatique des onglets selon le nombre d'item et doit insérer une image différente dans chaque onglet. Mais je n'arrive pas à y insérer l'image différente. Seule la dernière image se retrouve sur chacun des onglets.

Pour exécuter le script, mettre 5 images (environ 373 X 250 pixel) en jpg dans le dossier c:\Temp

En passant, désolé pour le poste au mauvais endroit ... C'est mes premiers pas dans un forum.
En espérant que tout est maintenant conforme au règle du forum

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#include <GuiTab.au3>
Opt("GUIOnEventMode", 1)

Global $data1, $aff
Global $hTab, $Gui2
#Region ### START Koda GUI section ### Form=
$Gui1 = GUICreate("Choices Dialog", 300, 250, 302, 218)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form2Close")

$ListBox1 = GUICtrlCreateList("", 8, 8, 137, 201)
GUICtrlSetData(-1, "Item1|Item2|Item3|Item4|Item5")
$Label1 = GUICtrlCreateLabel("Label1", 16, 224, 100, 20)

$ButtonTab = GUICtrlCreateButton("Tab", 180, 20, 50, 50)
GUICtrlSetOnEvent(-1, "ButtonClick")
GUISetState(@SW_SHOW, $Gui1)
; Create GUI
    $Gui2 = GUICreate("Spécimens en comparaison", 400, 300)
    $hTab = GUICtrlCreateTab(2, 2, 396, 296)
    GUISetOnEvent($GUI_EVENT_CLOSE, "FormClose")

    GUISetState(@SW_HIDE, $Gui2)

#EndRegion ### END Koda GUI section ###
While 1
    Sleep(100)
    GUICtrlSetData($Label1,"Contient " & _GUICtrlListBox_GetCount($ListBox1) & " items")

WEnd



Func ButtonClick()

    $aI = _GUICtrlListBox_GetCount($ListBox1)
        For  $iI = 1 To $aI

            _GUICtrlListBox_ClickItem($ListBox1, $iI)
            $data1 = GUICtrlRead($ListBox1)
            _GUICtrlTab_InsertItem($hTab, $iI, $data1)
             GUICtrlCreatePic("C:\TEMP\" & $data1 & ".jpg", 20, 40, 373, 250)
              ;MsgBox(0,"OK",$data1)
        Next
            GUISetState(@SW_SHOW, $Gui2)
EndFunc

Func Form2Close()
     _GUICtrlListBox_EndUpdate($ListBox1)
    exit
EndFunc

Func FormClose()
    GUISwitch($Gui1)
    GUISetState(@SW_HIDE, $Gui2)
    _GUICtrlTab_DeleteAllItems($hTab)

EndFunc
Fichiers joints
TabImage.au3
(1.54 Kio) Téléchargé 55 fois
veloleloup
Niveau 1
Niveau 1
Messages : 4
Enregistré le : dim. 07 nov. 2010 15:59
Status : Hors ligne

Re: [..] Insertion d'images automatiquement dans des onglets

#2

Message par veloleloup »

J'ai essayé GuiCtrlSetState(-1,$GUI_ONTOP) comme un de vous m'a suggéré (merci en passant) ou bien GUICtrlCreatePic("", 20, 40, 373, 250,$WS_CLIPSIBLINGS ) et aucun bon résultat.

Je comprend que dans ma boucle "For", lorsque j'utilise GUICtrlCreatePic pour insérer mon image, à tout les tours, l'image est écrasée. Je ne trouve pas la méthode pour pouvoir renommer ma variable que je dois probablement placer devant. Exemple : $var = GUICtrlCreatePic (1ier tour) $var2 = GUICtrlCreatePic (2ème tour)
Car si $var changerait pour $var2 et ainsi de suite à chaque passage de la boucle, probablement que j'aurais l'image dans chaque onglet.... Suis-je dans l'erreur ??? :?:
Avatar du membre
pop45
Membre émérite
Membre émérite
Messages : 251
Enregistré le : dim. 30 août 2009 16:18
Status : Hors ligne

Re: [..] Insertion d'images automatiquement dans des onglets

#3

Message par pop45 »

Je te l'avais dis, quand tu appelle guictrlcreatepic, l'image est crée par dessus le tab,et non dans le tab :evil:
Cordialement Pop45
Veuillez agrée nos sentiment les plus distinguer, soyez assurer de mon entièr et amical collaboration, bien a vous pour toujours et a jamais dans l'unique but de servir l'espérance de votre satisfaction.
veloleloup
Niveau 1
Niveau 1
Messages : 4
Enregistré le : dim. 07 nov. 2010 15:59
Status : Hors ligne

Re: [..] Insertion d'images automatiquement dans des onglets

#4

Message par veloleloup »

Oui Pop45, :D c'est vrai et je m'en était rendu compte. Mais comment faire pour l'insérer dans chaque onglet. Ça c'est un mystère pour moi. :(
veloleloup
Niveau 1
Niveau 1
Messages : 4
Enregistré le : dim. 07 nov. 2010 15:59
Status : Hors ligne

[R] Insertion d'images automatiquement dans des onglets

#5

Message par veloleloup »

J'ai réussi en utilisant d'autre fonctions mais de façon similaire sauf que ici le problème se situe avec l'image du premier Onglet, elle n'apparait que lorsqu'on clique un autre onglet et qu'on revient sur le premier onglet... J"ouvrirai un autre sujet sur ce problème. Merci de votre aide

voici le nouveau code

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#include <GuiTab.au3>
Opt("GUIOnEventMode", 1)

Global $data1, $aff
Global $hTab, $Gui2

$Gui1 = GUICreate("Choices Dialog", 300, 250, 302, 218)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form2Close")

$ListBox1 = GUICtrlCreateList("", 8, 8, 137, 201)
GUICtrlSetData(-1, "Item1|Item2|Item3|Item4|Item5")
$Label1 = GUICtrlCreateLabel("Label1", 16, 224, 100, 20)

$ButtonTab = GUICtrlCreateButton("Tab", 180, 20, 50, 50)
GUICtrlSetOnEvent(-1, "ButtonClick")
GUISetState(@SW_SHOW, $Gui1)
; Create GUI
    $Gui2 = GUICreate("Spécimens en comparaison", 400, 300)
    $hTab = GUICtrlCreateTab(2, 2, 396, 296)
    GUISetOnEvent($GUI_EVENT_CLOSE, "FormClose")

    GUISetState(@SW_HIDE, $Gui2)

While 1
    Sleep(100)
    GUICtrlSetData($Label1,"Contient " & _GUICtrlListBox_GetCount($ListBox1) & " items")

WEnd

Func ButtonClick()

    $aI = _GUICtrlListBox_GetCount($ListBox1)
        For  $iI = 0 To $aI -1

            _GUICtrlListBox_ClickItem($ListBox1, $iI)
            $data1 = GUICtrlRead($ListBox1)
            GUICtrlCreateTabItem($data1)
            GUICtrlCreatePic("C:\TEMP\" & $data1 & ".jpg", 20, 40, 373, 250) 
            GuiCtrlSetState(-1,$GUI_ONTOP)
             
        Next
            GUISetState(@SW_SHOW, $Gui2)
EndFunc

Func Form2Close()
     _GUICtrlListBox_EndUpdate($ListBox1)
    exit
EndFunc

Func FormClose()
    GUISwitch($Gui1)
    GUISetState(@SW_HIDE, $Gui2)
    _GUICtrlTab_DeleteAllItems($hTab)

EndFunc
Répondre