GUI Problem

  • Hallo,

    mal wieder ein Problem....

    Ich hab ne GUI erstellt mit einer Abfrage drin....

    Wenn ein Feld in der GUI nicht ausgefüllt ist, bringt das Progi einen Fehler.
    Im Moment lasse ich die GUI darauf löschen und neu erstellen...

    Da aber mehrere "Pflichtfelder" in der GUI sind, und ich den Leuten nicht zumuten will, dass Sie alle Felder erneut ausfüllen müssen, bräucht ich eine Funktion,
    die die alten Eingaben übernimmt....

  • Bitte [ autoit ]-Tags verwenden.

    Spoiler anzeigen
    [autoit]

    loop()
    func loop()
    while 1
    switch GUIGetMsg($gui1)
    case $esc
    exitloop
    case $GUI_EVENT_CLOSE
    exitloop
    case $ok
    $auf = guictrlread($auf)
    $mas = guictrlread($mas)
    $ter = guictrlread($ter)
    $kun = guictrlread($kun)
    $nr = guictrlread($nr)
    $bez = GUICtrlRead($bez)
    $kon = GUICtrlRead($kon)
    if $auf = "" then
    msgbox (16, "Pflichtfelder", "Bitte füllen Sie das Feld Auftragsnummer aus!")
    ContinueLoop
    EndIf

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

    if $mas = "" then
    msgbox (16, "Pflichtfelder", "Bitte füllen Sie das Feld Maschine aus!")
    ContinueLoop
    EndIf

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

    if $ter = "" then
    msgbox (16, "Pflichtfelder", "Bitte füllen Sie das Feld Termin aus!")
    ContinueLoop
    EndIf

    if $kun = "" then
    msgbox (16, "Pflichtfelder", "Bitte füllen Sie das Feld Kunde aus!")
    ContinueLoop
    EndIf

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

    if $nr = "" then
    msgbox (16, "Pflichtfelder", "Bitte füllen Sie das Feld Maschinen Nummer aus!")
    ContinueLoop
    EndIf

    if $bez = "" then
    msgbox (16, "Pflichtfelder", "Bitte füllen Sie das Feld Maschinen Bezeichnung aus!")
    ContinueLoop
    EndIf

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

    if $kon = "" then
    msgbox (16, "Pflichtfelder", "Bitte füllen Sie das Feld Konstrukteur aus!")
    ContinueLoop
    EndIf

    main()
    EndSwitch
    WEnd
    endfunc

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

    • Offizieller Beitrag

    Ich weiß nicht welche Defaultdaten in den Feldern stehen. Das kann man in deinem Code nicht erkennen. Ein Vorschlag: Entferne einfach die GuiDelete Aufrufe und setze die Daten mit GuiCtrlSetData neu . Dann mußt du auch nicht ständig die Gui von neuem anzeigen lassen .

    Edit: Habe mir das ganze mal genauer angesehen, so wie das aussieht mußt du noch nicht mal die Felder neu mit Daten belegen. Einfach die Fehlermeldung ausgeben lassen und gut ist . Am ende der Fehlerabfrage einfach die Auswertung beginnen .

    Edit2: Ich würde das so machen :

    Spoiler anzeigen
    [autoit]

    loop()
    Func loop()
    While 1
    Switch GUIGetMsg($gui1)
    Case $esc
    ExitLoop
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $ok
    $auf = GUICtrlRead($auf)
    $mas = GUICtrlRead($mas)
    $ter = GUICtrlRead($ter)
    $kun = GUICtrlRead($kun)
    $nr = GUICtrlRead($nr)
    $bez = GUICtrlRead($bez)
    $kon = GUICtrlRead($kon)
    If $auf = "" Then
    MsgBox(16, "Pflichtfelder", "Bitte füllen Sie das Feld Auftragsnummer aus!")
    ContinueLoop
    ElseIf $mas = "" Then
    MsgBox(16, "Pflichtfelder", "Bitte füllen Sie das Feld Maschine aus!")
    ContinueLoop
    ElseIf $ter = "" Then
    MsgBox(16, "Pflichtfelder", "Bitte füllen Sie das Feld Termin aus!")
    ContinueLoop
    ElseIf $kun = "" Then
    MsgBox(16, "Pflichtfelder", "Bitte füllen Sie das Feld Kunde aus!")
    ContinueLoop
    ElseIf $nr = "" Then
    MsgBox(16, "Pflichtfelder", "Bitte füllen Sie das Feld Maschinen Nummer aus!")
    ContinueLoop
    ElseIf $bez = "" Then
    MsgBox(16, "Pflichtfelder", "Bitte füllen Sie das Feld Maschinen Bezeichnung aus!")
    ContinueLoop
    ElseIf $kon = "" Then
    MsgBox(16, "Pflichtfelder", "Bitte füllen Sie das Feld Konstrukteur aus!")
    ContinueLoop
    Else
    ;Hier kommt die Auswertung, alle Überprüfungen waren erfolgreich
    EndIf
    main()
    EndSwitch
    WEnd
    EndFunc ;==>loop

    [/autoit]
    • Offizieller Beitrag

    Hab da noch einige Fehler gefunden . Beim Auslesen der Controls darf nicht der gleiche Variablennamen genutzt werden wie die Controls selbst .

    Spoiler anzeigen
    [autoit]

    loop()
    Func loop()
    While 1
    Switch GUIGetMsg($gui1)
    Case $esc
    ExitLoop
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $ok
    $auf = GUICtrlRead($hauf)
    $mas = GUICtrlRead($hmas)
    $ter = GUICtrlRead($hter)
    $kun = GUICtrlRead($hkun)
    $nr = GUICtrlRead($hnr)
    $bez = GUICtrlRead($hbez)
    $kon = GUICtrlRead($hkon)
    If $auf = "" Then
    MsgBox(16, "Pflichtfelder", "Bitte füllen Sie das Feld Auftragsnummer aus!")
    ContinueLoop
    ElseIf $mas = "" Then
    MsgBox(16, "Pflichtfelder", "Bitte füllen Sie das Feld Maschine aus!")
    ContinueLoop
    ElseIf $ter = "" Then
    MsgBox(16, "Pflichtfelder", "Bitte füllen Sie das Feld Termin aus!")
    ContinueLoop
    ElseIf $kun = "" Then
    MsgBox(16, "Pflichtfelder", "Bitte füllen Sie das Feld Kunde aus!")
    ContinueLoop
    ElseIf $nr = "" Then
    MsgBox(16, "Pflichtfelder", "Bitte füllen Sie das Feld Maschinen Nummer aus!")
    ContinueLoop
    ElseIf $bez = "" Then
    MsgBox(16, "Pflichtfelder", "Bitte füllen Sie das Feld Maschinen Bezeichnung aus!")
    ContinueLoop
    ElseIf $kon = "" Then
    MsgBox(16, "Pflichtfelder", "Bitte füllen Sie das Feld Konstrukteur aus!")
    ContinueLoop
    Else
    ;Hier kommt die Auswertung, alle Überprüfungen waren erfolgreich
    EndIf
    main()
    EndSwitch
    WEnd
    EndFunc ;==>loop

    [/autoit]

    Einfach die Variablennamen der Controls um ein h im Namen erweitern.