Listview ausblenden bis Update check durch ist

  • Hallo zusammen,

    heute habe ich das Problem, das meine Listview sich einfach zu schnelle einbländet.

    Hier erstmal der Update check und wo die Listview ist

    Spoiler anzeigen

    Global $ver = "1.0.0"

    #region GUI + ListView
    $Form1 = GUICreate("BBO Almanach Resourcen Rechner", 530, 320, 193, 125)
    GUICtrlCreatePic("data\Backround\Background.tgx", 0, 0, 530, 320)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlCreateLabel("© By Ghostleader and Team Almanach", 130, 304, 350, 15)
    GUICtrlSetFont(-1, 10, 600)
    GUICtrlSetColor(-1, 16777215)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $LabelUpdater = GUICtrlCreateLabel("Es wird nun auf Updates geprüft!",20, 20, 400, 70)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetColor(-1, 16777215)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $ButtonJA = GUICtrlCreateButton("JA", 50, 80, 65, 22, $WS_GROUP)
    GUICtrlSetState(-1,$GUI_HIDE)
    $ButtonNEIN = GUICtrlCreateButton("NEIN", 120, 80, 45, 22, $WS_GROUP)
    GUICtrlSetState(-1,$GUI_HIDE)
    $ButtonOK = GUICtrlCreateButton("OK", 120, 80, 89, 33, $WS_GROUP)
    GUICtrlSetState(-1,$GUI_HIDE)
    #endregion GUI + ListView

    GUISetState(@SW_SHOW)
    Sleep(2000) ; nur um die Meldung lesen zu können

    if updatecheck() = -1 Then
    GUICtrlSetData($LabelUpdater, "Du benutzt bereits die neueste Version.")
    GUICtrlSetState($ButtonOK, $GUI_SHOW)
    Else
    GUICtrlSetData($LabelUpdater, "Es steht eine neue Version zur Verfügung. Soll diese installiert werden?")
    GUICtrlSetState($ButtonJA, $GUI_SHOW)
    GUICtrlSetState($ButtonNEIN, $GUI_SHOW)
    EndIf

    Global $listview = GUICtrlCreateListView("Klick an was du hertellen willst!", 20, 20, 180, 280, $LVS_SINGLESEL, $LVS_EX_FULLROWSELECT)
    GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    _GUICtrlListView_SetColumnWidth($listview, 0, 200)

    Mein Probleme ind folgende:

    1. Das die Listview immer schon auftaucht bevor man ok geklickt hat falls kein Update vorhanden ist.
    2. Das die Listview immer schon auftaucht bevor man auf nein klickt falls man nicht updaten möchte.
    3. Das die Listview noch auftaucht selbst wenn man auf ja klickt und kommt "Update wird geladen", denn danach schliesst ich das Programm eh!

    Hier nochmal anhand des Codeauschnittes wie ich es meine habe es kommentiert!

    Spoiler anzeigen

    if updatecheck() = -1 Then
    GUICtrlSetData($LabelUpdater, "Du benutzt bereits die neueste Version.")
    GUICtrlSetState($ButtonOK, $GUI_SHOW) ; LISTVIEW SOLL ERST ERSCHEINEN NACH KLICKEN DES OK BUTTONS WENN KEIN UPDATE VORHANDEN IST
    Else
    GUICtrlSetData($LabelUpdater, "Es steht eine neue Version zur Verfügung. Soll diese installiert werden?")
    GUICtrlSetState($ButtonJA, $GUI_SHOW) ;LISTVIEW SOLL GARNICHT ERST ERSCHEINEN WEIL SICH DAS PROGRAMM NACH DOWNLOAD SELBST SCHLIESST
    GUICtrlSetState($ButtonNEIN, $GUI_SHOW) ;LISTVIEW LOLL ERST ERSCHEINEN NACH KLICKEN DES NEIN BOTTONS
    EndIf

    Ich hoffe ihr habt eine Idee um dies zu beheben!

    Mfg Ghostleader

    Einmal editiert, zuletzt von Ghostleader (10. Juli 2011 um 02:00)

    • Offizieller Beitrag

    Mach es wie mit deinen Buttons auch.

    [autoit]

    GUICtrlSetState($listview,$GUI_HIDE)

    [/autoit]


    und

    [autoit]

    GUICtrlSetState($listview,$GUI_SHOW)

    [/autoit]
  • Hallo Ghostleader,

    in deinem Code-Schnipseln kann man leider nicht erkennen wie du auf die verschiedenen ButtoClicks reagierst. Dies wäre aber wichtig. Da du aber bereits

    [autoit]

    GUICtrlSetState(-1, $GUI_HIDE)

    [/autoit]

    kennst, solltest du die Lösung auch alleine schaffen. Andernfalls bitte lauffähiges Beispielskript mit dem Problem,

    mfg autoBert

  • Hallo ihr beiden,

    danke erstmal für eure Antworten die mich schon fast ans Ziehl gebracht haben.

    Warum fast? Naja also wenn bei dem Button nein und ok klappt es, also die Listview kommt erst nach klicken einer der Buttons.

    Beim Ja Button klick kommt aber leider Immernoch die Listview bevor sich das kommplette Programm schliest zum Download.

    Hier ein lauffähiges Script:

    Spoiler anzeigen

    #include <GUIConstantsEx.au3>
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <ListviewConstants.au3>
    #include <EditConstants.au3>
    #include <GuiListView.au3>
    #include <StaticConstants.au3>
    #include <INet.au3>

    Global $ver = "1.0.0"

    #region GUI + ListView
    $Form1 = GUICreate("BBO Almanach Resourcen Rechner", 530, 320, 193, 125)
    GUICtrlCreatePic("data\Backround\Background.tgx", 0, 0, 530, 320)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlCreateLabel("© By Ghostleader and Team Almanach", 130, 304, 350, 15)
    GUICtrlSetFont(-1, 10, 600)
    GUICtrlSetColor(-1, 16777215)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $LabelUpdater = GUICtrlCreateLabel("Es wird nun auf Updates geprüft!",20, 20, 400, 70)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetColor(-1, 16777215)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $ButtonJA = GUICtrlCreateButton("JA", 50, 80, 65, 22, $WS_GROUP)
    GUICtrlSetState(-1,$GUI_HIDE)
    $ButtonNEIN = GUICtrlCreateButton("NEIN", 120, 80, 45, 22, $WS_GROUP)
    GUICtrlSetState(-1,$GUI_HIDE)
    $ButtonOK = GUICtrlCreateButton("OK", 120, 80, 89, 33, $WS_GROUP)
    GUICtrlSetState(-1,$GUI_HIDE)
    Global $listview = GUICtrlCreateListView("Klick an was du hertellen willst!", 20, 20, 180, 280, $LVS_SINGLESEL, $LVS_EX_FULLROWSELECT)
    GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    _GUICtrlListView_SetColumnWidth($listview, 0, 200)
    #endregion GUI + ListView

    GUISetState(@SW_SHOW)
    Sleep(2000) ; nur um die Meldung lesen zu können

    if updatecheck() = -1 Then
    GUICtrlSetData($LabelUpdater, "Du benutzt bereits die neueste Version.")
    GUICtrlSetState($ButtonOK, $GUI_SHOW) ; LISTVIEW SOLL ERST ERSCHEINEN NACH KLICKEN DES OK BUTTONS WENN KEIN UPDATE VORHANDEN IST
    GUICtrlSetState($listview, $GUI_HIDE)
    Else
    GUICtrlSetData($LabelUpdater, "Es steht eine neue Version zur Verfügung. Soll diese installiert werden?")
    GUICtrlSetState($ButtonJA, $GUI_SHOW) ;LISTVIEW SOLL GARNICHT ERST ERSCHEINEN WEIL SICH DAS PROGRAMM NACH DOWNLOAD SELBST SCHLIESST
    GUICtrlSetState($listview, $GUI_HIDE)
    GUICtrlSetState($ButtonNEIN, $GUI_SHOW) ;LISTVIEW LOLL ERST ERSCHEINEN NACH KLICKEN DES NEIN BOTTONS
    GUICtrlSetState($listview, $GUI_HIDE)
    EndIf

    GUISetState(@SW_SHOW)
    Sleep(2000)

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Case $ButtonJA
    GUICtrlSetData($LabelUpdater,"Update wird jetzt heruntergeladen...")
    GUICtrlSetState($ButtonJA,$GUI_HIDE)
    GUICtrlSetState($listview, $GUI_HIDE)
    GUICtrlSetState($ButtonNEIN,$GUI_HIDE)
    GUICtrlSetState($listview, $GUI_SHOW)
    installupdate()
    Case $ButtonNEIN, $ButtonOK
    GUICtrlSetState($ButtonJA,$GUI_HIDE)
    GUICtrlSetState($listview, $GUI_HIDE)
    GUICtrlSetState($ButtonNEIN,$GUI_HIDE)
    GUICtrlSetState($ButtonOK, $GUI_HIDE)
    GUICtrlSetState($LabelUpdater,$GUI_HIDE)
    GUICtrlSetState($listview, $GUI_SHOW)
    Case $Listview
    _GUICtrlListView_SortItems($Listview, GUICtrlGetState($Listview))
    EndSwitch
    WEnd
    Exit

    Func updatecheck()
    InetGet("http://test.de/test/update.txt", @Scriptdir & "\data\update.txt", 1, 0)
    $file = FileOpen(@Scriptdir & "\data\update.txt", 0)
    $line = FileReadLine($file, 1)
    If $line = $ver Then
    return -1
    Else
    Return 1
    EndIf
    EndFunc

    Func installupdate()
    InetGet("http://test.de/test/test.sfx.exe", @ScriptDir & "\test.sfx.exe", 1, 0)
    Run(@ScriptDir & "\test.sfx.exe")
    Sleep(2000)
    Exit
    EndFunc

    Mfg Ghostleader

  • Hallo nochmal,

    habe den Fehler noch gefunden.

    und zwar habe ich unten im 2ten Case in der Wihle Schleife einfach ein GUICtrlSetState($listview, $GUI_SHOW) zuviel gesetzt!

    Vielen dank nochmal für die vorangegangene Hilfe!

    Mfg Ghostleader