GUI leeren ????

  • Ich habe mal eine Frage zu dem leeren von GUI's, bzw. GUI-Elementen.

    Gibt es eine Funktion die mir die gesamte GUI leert oder muss ich immer wieder mit GUIDelete() einzelne Elemente meiner GUI löschen ???

  • Mein Problem ist nur das ich nicht alle meiner GUI-Elemente benutze.

    Um es etwas genauer zu erklären :

    - Habe eine GUI
    - In dieser GUI ein Menü mit zwei Punkten die man auswählen kann
    - Je nachdem welchen Menüpunkt ich auswähle, wird eine andere Funktion
    aufgerufen
    - In diesen Funktion habe ich unterschiedliche Labels usw.

    Habe das Problem, wenn ich den ersten Menüpunkt aufrufe wird etwas in der GUI angezeigt und wenn ich danach auf den zweiten Menüpunkt klicke wird der neue Inhalt einfach nur drübergeschrieben.

  • Zitat

    Original von DjPro2k7
    Mein Problem ist nur das ich nicht alle meiner GUI-Elemente benutze.

    Um es etwas genauer zu erklären :

    - Habe eine GUI
    - In dieser GUI ein Menü mit zwei Punkten die man auswählen kann
    - Je nachdem welchen Menüpunkt ich auswähle, wird eine andere Funktion
    aufgerufen
    - In diesen Funktion habe ich unterschiedliche Labels usw.

    Habe das Problem, wenn ich den ersten Menüpunkt aufrufe wird etwas in der GUI angezeigt und wenn ich danach auf den zweiten Menüpunkt klicke wird der neue Inhalt einfach nur drübergeschrieben.


    dann änderst du nur die werte der benutzten?!

  • Nein benutze nicht einfach nur andere Werte.
    Habe so zu sagen zwei verschiedene Aussehen pro funktion.

  • Hier ist mein Skript vielleicht verstehst du dann mein Problem besser

    Spoiler anzeigen
    [autoit]

    #include "SQLite.au3"
    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("Bundesliga", 500, 500)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $tabmenue = GUICtrlCreateMenu ("&Tabelle")
    $tabitem = GUICtrlCreateMenuitem ("anzeigen",$tabmenue)

    [/autoit] [autoit][/autoit] [autoit]

    $tagmenue = GUICtrlCreateMenu("&Spieltage")
    $tagitem = GUICtrlCreateMenuItem("anzeigen",$tagmenue)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    $z = 30
    $s = 60
    $platz = 1

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()


    Select

    [/autoit] [autoit][/autoit] [autoit]

    Case $msg = $tabitem

    tabelle()

    Case $msg = $tagitem

    spieltag()

    [/autoit] [autoit][/autoit] [autoit]

    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    EndSelect
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func spieltag()

    GUICtrlCreateCombo ("Spieltag 1", 30,30)
    GUICtrlSetData(-1,"Spieltag 2|Spieltag 3","Spieltag 1")
    $b1 = GUICtrlCreateButton("zeigen",250,30)

    If $msg = $b1 Then
    Msgbox(0,"Info","Only a test...")
    EndIf

    $combo = GUICtrlRead (-1)

    GUICtrlCreateLabel($combo,60,60)

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func tabelle()

    GUICtrlCreateLabel("Platz", 30, 30)
    GUICtrlCreateLabel("Club", 100, 30)
    GUICtrlCreateLabel("Spiele", 170, 30)
    GUICtrlCreateLabel("Siege", 220, 30)
    GUICtrlCreateLabel("Unendschieden", 260, 30)
    GUICtrlCreateLabel("Niederlagen", 345, 30)
    GUICtrlCreateLabel("Tore", 410, 30)
    GUICtrlCreateLabel("Punkte", 440, 30)

    Local $hQuery,$aRow
    _SQLite_Startup ("sqlite3.dll"); lade der dll
    _SQLite_Open("bundesliga.db");lade der Datenbank
    _SQLite_Query(-1,"Select * from '1bundesliga' ORDER BY punkte DESC",$hQuery); muster abfrage

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While _SQLite_FetchData ($hQuery, $aRow) = $SQLITE_OK ;schleife bis ende der abfrage
    GUICtrlCreateLabel($platz,$z,$s)
    GUICtrlCreateLabel($aRow[1],$z+40,$s)
    GUICtrlCreateLabel($aRow[2],$z+150,$s)
    GUICtrlCreateLabel($aRow[3],$z+200,$s)
    GUICtrlCreateLabel($aRow[4],$z+270,$s)
    GUICtrlCreateLabel($aRow[5],$z+350,$s)
    GUICtrlCreateLabel($aRow[6]&" : "&$aRow[7],$z+385,$s)
    GUICtrlCreateLabel($aRow[8],$z+420,$s)
    $s += 30
    $platz += 1
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Close()
    _SQLite_Shutdown()

    EndFunc

    [/autoit]

    Edit BugFix: Spoiler gesetzt

  • seh ich genauso ;)

    erst definieren und dann mit GuiCtrlSetState auf enable/disable und mit GuiCtrlSetData kannst du sie ggf. dann ändern...


    greetz oli

  • Okay hab ich jetzt so gemacht!
    Ist zwar umständlich, aber funzt so.

    Also danke für eure Hilfe

    • Offizieller Beitrag
    Zitat

    Original von DjPro2k7
    Okay hab ich jetzt so gemacht!
    Ist zwar umständlich, aber funzt so.

    Also danke für eure Hilfe

    Mag auf den ersten Blick etwas umständlicher aussehen. Du kannst dann aber das Skript viel leichter lesen.
    Es hat sich als eine Art Standard eingebürgert, ein Skript etwa in dieser Form aufzubauen:
    - Includes
    - Optionen
    - Konstanten/Variablen -Deklarationen
    - GUI Deklarationen
    - Hauptprogramm
    - Funktionen

    Natürlich hat da jeder auch seine 'eigene Note'. ;)
    Aber das macht es, gerade für den Hilfe gebenden, einfacher dein Skript zu lesen.