Dynamische GUI machbar? (Text in der GUI variabel darstellen)

  • Mach gerad so meine ersten Schritte mit GUIs durch Koda/AutoIt.
    Mein erster Versuch schaut so aus:

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=E:\SSD-Festplatte (BackUp)\Daten Archiv\PROJEKTE\AutoIt Scripts\Zimmer\Abfrage(Test).kxf
    $Hauptfenster = GUICreate("Abfrage (X-Position in Meter)", 282, 201, 192, 124)
    $Text_Info_0 = GUICtrlCreateLabel("Geben sie den Abstand", 0, 16, 280, 24, $SS_CENTER)
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
    $Abstand = GUICtrlCreateInput("Abstand", 16, 120, 81, 21)
    $Default_Info = GUICtrlCreateLabel("Defaultwert ist 2,55 (m).", 16, 96, 172, 24)
    $Text_Info_1 = GUICtrlCreateLabel("in Meter an:", 8, 32, 280, 24, $SS_CENTER)
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
    $Default = GUICtrlCreateButton("Default-Wert", 192, 120, 73, 25)
    $OK = GUICtrlCreateButton("OK", 112, 120, 65, 25)
    $Rahmen = GUICtrlCreateGroup("", 8, 89, 265, 63)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlSetState(-1, $GUI_HIDE)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $OK
    $Abstand_Eingabe = StringReplace ( GUICtrlRead ( $Abstand ), ",", "." )
    If StringIsFloat ( $Abstand_Eingabe ) OR StringIsInt ( $Abstand_Eingabe ) = 1 Then
    IniWrite ( "Zimmer.ini", "Setup", "Abstand (Meter)", $Abstand_Eingabe )
    ExitLoop
    EndIf
    MsgBox (48, "Achtung!", "Bitte den Wert direkt als Zahl eingeben!" )
    Case $msg = $Default
    IniWrite ( "Zimmer.ini", "Setup", "Abstand (Meter)", "2.55" )
    ExitLoop
    EndSelect
    WEnd

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

    Exit

    [/autoit]

    Die Info wenn jetzt keine Zahl oder halt als Beispiel "4,28m" eingegeben wurde, lasse ich als MsgBox anzeigen.
    Nun meine Frage, kann ich eigentlich in der GUI selbst einen Text variabel anzeigen lassen? Halt als Ersatz für die MsgBox.
    Wo ist egal, direkt unter den 2 Buttons aus meinen Versuch oder wo halt noch Platz ist.
    Hab mal die Forensuche befragt ( << dynamische GUIs >> ), aber in den 4 Seiten hab ich leider nicht das gefunden was mir evt. helfen könnte.

    Hoffe das geht irgendwie, so das nicht irgendwelche Infoboxen aufploppen müssen. ;)

    Einmal editiert, zuletzt von T'hul-Nok Razna (5. April 2010 um 18:56)

  • Wie meinste das genau ?

    Ich würde mal sagen mit

    [autoit]

    GuictrlcreateLabel

    [/autoit]

    Label erstellen und Daten kannste mit

    [autoit]

    GuiCtrlSetData

    [/autoit]

    verändern

  • Das erste Bild zeigt den jetzigen Zustand an, das zweite Bild zeigt an wie ich es gern hätte. :)
    Halt das erst mal nichts da steht und bei Falscheingabe dann der Infotext.


    [Blockierte Grafik: http://img441.imageshack.us/img441/4532/beispielq.jpg]


    edit:
    Versuch mal deine Hilfe, mal schauen was dabei raus kommt. Hab da selbst noch keinen Plan.

  • bitte

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=E:\SSD-Festplatte (BackUp)\Daten Archiv\PROJEKTE\AutoIt Scripts\Zimmer\Abfrage(Test).kxf
    $Hauptfenster = GUICreate("Abfrage (X-Position in Meter)", 282, 201, 192, 124)
    $Text_Info_0 = GUICtrlCreateLabel("Geben sie den Abstand", 0, 16, 280, 24, $SS_CENTER)
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
    $Abstand = GUICtrlCreateInput("Abstand", 16, 120, 81, 21)
    $Default_Info = GUICtrlCreateLabel("Defaultwert ist 2,55 (m).", 16, 96, 172, 24)
    $Text_Info_1 = GUICtrlCreateLabel("in Meter an:", 8, 32, 280, 24, $SS_CENTER)
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
    $Default = GUICtrlCreateButton("Default-Wert", 192, 120, 73, 25)
    $OK = GUICtrlCreateButton("OK", 112, 120, 65, 25)
    $Rahmen = GUICtrlCreateGroup("", 8, 89, 265, 63)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlSetState(-1, $GUI_HIDE)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $OK
    $Abstand_Eingabe = StringReplace ( GUICtrlRead ( $Abstand ), ",", "." )
    If StringIsFloat ( $Abstand_Eingabe ) OR StringIsInt ( $Abstand_Eingabe ) = 1 Then
    IniWrite ( "Zimmer.ini", "Setup", "Abstand (Meter)", $Abstand_Eingabe )
    ExitLoop
    Else
    GUICtrlCreateLabel("Bitte den Wert direkt als Zahl eingeben!", xpos, ypos, breite, höhe) ; xpos, ypos, breite, höhe musst du och angeben
    EndIf
    Case $msg = $Default
    IniWrite ( "Zimmer.ini", "Setup", "Abstand (Meter)", "2.55" )
    ExitLoop
    EndSelect
    WEnd

    [/autoit]

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Super!
    Klappt genau wie ich es haben wollte! Vielen Dank noch einmal. Hätte ich nicht gedacht das es so relativ einfach sein konnte. :)

    [autoit]

    GUICtrlCreateLabel("Bitte den Wert direkt als Zahl eingeben!", xpos, ypos, breite, höhe)

    [/autoit]

    oder über

    [autoit]

    GUICtrlSetData ( $Warnung, "Bitte den Wert als Zahl eingeben!" )

    [/autoit]


    Mal schauen ob ich ein Ausrufezeichen links daneben ein-/ausblenden kann. Irgendwo hab ich in der Hilfe was gefunden. Mal suchen.

    edit:
    Über << GUICtrlSetImage >> gehts. :)

    Einmal editiert, zuletzt von T'hul-Nok Razna (5. April 2010 um 19:27)