Frage zu guictrlcreatepic auf einem TabItem

  • Hallo zusammen.

    folgendes habe ich gemacht:
    Einen Button auf einem Tab erstellt, welcher eine Funktion aufruft. Die Funktion führt FileSelectFolder aus und prüft danach über FileExists, ob eine bestimmte Datei darin vorhanden ist.
    Falls ja, wird ein grüner Haken auf dem Gui eingeblendet, falls nein, ein rotes Kreuz, damit der User weiß, dass das Verzeichnis nicht korrekt ist.

    Das Problem bei der Sache ist, dass das mit GUICtrlCreatePic in der Funktion ausgewählte Bild dann auf jedem Tab sichtbar ist und nicht nur auf dem derzeit aktiven. Habe es auch schon versucht, in dem ich vor den Befehl noch mal einen GUISwitch gesetzt habe, aber leider ohne Erfolg.

    Hier mal die Funktion im Quellcode, aufgerufen wird sie ganz normal über einen Button, den Teil schenke ich mir jetzt mal.

    Spoiler anzeigen
    [autoit]

    Func filepathsqltools()
    $var = FileSelectFolder("Tools-Verzeichnis SQL-Server:","")
    If FileExists($var & "\Binn\sqlcmd.exe") = 1 Then
    GUICtrlSetData($pathsqltools,$var)
    GUICtrlCreatePic("button_ok.jpg",390,110,20,20)
    GUISwitch($gui,$tabsql)
    GUICtrlSetState(-1,$GUI_SHOW)
    Else
    GUICtrlSetData($pathsqltools,$var)
    GUICtrlCreatePic("button_okNOT.jpg",390,110,20,20)
    GUISwitch($gui,$tabsql)
    GUICtrlSetState(-1,$GUI_SHOW)
    EndIf
    EndFunc

    [/autoit]

    Was muss ich denn tun, damit das Bild NUR auf dem Tab $tabsql angezeigt wird?

    Gruß
    Jass

    Einmal editiert, zuletzt von Jass (7. Oktober 2010 um 11:05)

  • Du könntest zum Beispiel GuiCtrlCreatePic direkt nach dem erstellen des entsprechenden Tab's aufrufen und dann in deiner Funktion mit GUICtrlSetImage das entsprechende Bild setzen.

    Das automatische aus- und einblenden von Controls klappt aber nur mit GUICtrlCreateTab und GUICtrlCreateTabItem.
    Bei _GUICtrlTab_Create musst du dich selbst darum kümmern...
    Lg

  • Danke dir für den Tipp, hab es jetzt zwar etwas anders gemacht, aber es klappt.

    Hier mal der Code im Tab:

    Spoiler anzeigen
    [autoit]

    GUICtrlCreateLabel("Tools-Verzeichnis SQL-Server: ",30,90)
    $buttonsqltools = GUICtrlCreatepic("folder_open.jpg",30,110,20,20)
    GUICtrlSetTip(-1,"Hier klicken, um das Verzeichnis zu wählen")
    $pathsqltools = GUICtrlCreateInput("",70,110,300)
    $sqltoolsok = GUICtrlCreatePic("button_ok.jpg",390,110,20,20)
    GUICtrlSetState(-1,$GUI_HIDE)
    $sqltoolsokNOT = GUICtrlCreatePic("button_okNOT.jpg",390,110,20,20)
    GUICtrlSetState(-1,$GUI_HIDE)

    [/autoit]

    Und hier meine Funktion:

    Spoiler anzeigen
    [autoit]

    Func filepathsqltools()
    $var = FileSelectFolder("Tools-Verzeichnis SQL-Server:","")
    If FileExists($var & "\Binn\sqlcmd.exe") = 1 Then
    GUICtrlSetData($pathsqltools,$var)
    GUICtrlSetState($sqltoolsok,$GUI_SHOW)
    Else
    GUICtrlSetData($pathsqltools,$var)
    GUICtrlSetState($sqltoolsokNOT,$GUI_SHOW)
    EndIf
    EndFunc

    [/autoit]