Seite 1 von 1

[Unlösbar - aber Trost erhalten]Bei InputBox() erkennen, ob [Abbrechen] angeklickt wurde

Verfasst: So 4. Mai 2025, 12:13
von Proma
Hallo liebe Experten,

wenn eine InputBox einen Leer-String ("") zurückgibt, so kann dies bedeuten, dass der Anwender (vielleicht bewusst) auf [Abbrechen] geklickt hat oder dass er (vielleicht versehentlich) auf [OK] geklickt hat, ohne vorher die von ihm erwartete Eingabe getätigt zu haben.

Gibt es in LO-Basic eine Möglichkeit, zu prüfen, ob die InputBox durch das Anklicken von [Abbrechen] verlassen wurde? Die einzige mir bekannte Methode

Code: Alles auswählen

 s = InputBox("Wert eingeben:")
 If StrPrt(s) = 0 Then MsgBox "Vorgang wurde durch [Abbrechen] beendet"
greift hier leider nicht.

Meine Ausstattung:
Windows 11, LO 24.2.6.2

Vielen Dank vorab für Eure Unterstützung und liebe Grüße
vom Martin

Re: Bei InputBox() erkennen, ob [Abbrechen] angeklickt wurde

Verfasst: Mo 5. Mai 2025, 14:59
von mikele
Hallo,
das lässt sich meines Wissens nicht unterscheiden. Wenn man das wirklich unterscheiden will, könnte man
1) eine msgbox vorschalten
2)einen eigenen Dialog erstellen

Re: Bei InputBox() erkennen, ob [Abbrechen] angeklickt wurde

Verfasst: Mo 5. Mai 2025, 20:03
von Proma
Hallo mikele,
vielen Dank für Deine Unterstützung!
Ja, schade, dass es hierfür keine Lösung gibt; naja, muss man halt selber was basteln.
Ich hab' mir da jetzt was in mein Auswahl-Menü hineingestrickt - nicht wirklich schön, funktioniert aber.
Danke nochmal für Deine Antwort, tut ja auch gut, zu wissen, dass es nicht an mir liegt :-)
Liebe Grüße
vom Martin


Code: Alles auswählen

Public Function pMenu_Mini(ByVal strOpt As String, _
                  Optional ByVal strTtl As String) As Integer

' Einfaches Menü zur Auswahl einer von mehreren Optionen

' Parameter:
' strOpt             Optionen-String; Zeichenkette mit den Optionen; Trennzeichen ist das Komma (",")
' strTtl  [Optional] Überschrift für die Optionen

' Rückgabe:          Zahl 1...n (n=Anzahl der Optionen); gibt die ID der gewählten Option an. Bei Abbruch -1

    
  Dim strArr() As String                                        'Array für Optionen
  Dim s As String,  a As String                                 'Allgem Hilfsvariable, Zeilenumbruch
  Dim m As String,  c As String                                 'Eingabeaufforderung,  Benutzereingabe
  Dim i As Integer, x As Integer                                'Indexvariable,        Rückgabe
  
' OPTIONALE PARAMETER
  If IsMissing(strTtl) Then strTtl = "Was darf's denn sein ?"   'Überschrift für die Optionen


'OPTIONEN AUFBEREITEN
  a = Chr(10)
  strArr() = Split(strOpt, ",")                                 'Schreibe die Optionen in ein Array
  For i = 0 To UBound(strArr)                                   'Schleife durch alle Elemente des Array
    s = s & CStr(i + 1) & " - " & strArr(i) & a                 '  Bilde die nächste Option mit Auswahl-Kennziffer
  Next i                                                        'Ende Schleife
  

'BENUTZEREINGABE HOLEN UND AUSWERTEN
pMenu_Mini_Input:                                             'SM: Eingabe

' a) Benutzereingabe holen
  m = "Wähle eine der angebotenen Optionen aus," & a & _
      "gib hierzu die entsprechende Kennzahl ein" & a & _
      "und klicke auf [OK] oder [Abbrechen]." & a & a & _
      Ucase(strTtl) & a & a                                     'Eingabeaufforderung (Prompt) für InputBox
  c = InputBox(m & Left(s, Len(s) - 1))                         'Benutzereingabe holen

' b) Prüfen, ob ein Wert eingegeben wurde
  If c = "" Then                                                'Wenn [Abbrechen] ohne Eingabe OK gewählt wurde
    m = "Es wurde keine Auswahl getroffen!" & a & _
        "- Entweder wurde [Abbrechen] gewählt" & a & _
        "- oder ohne vorherige Eingabe wurde [OK] gewählt" & a & _
        "" & a & _
        "Soll der Vorgang wirklich beendet werden?"             '  MeldeText vorbereiten
    If MsgBox(m, MB_YESNO) = IDYES Then                         '  Wenn keine Eingabe getätigt wurde
      x = -1: GoTo Exit_pMenu_Mini                              '    Bei {Abbrechen] setze Rückgabewert, gehe zu SM: Ausgang
    End If                                                      '  Ende Wenn
    GoTo pMenu_Mini_Input                                       '  Gehe zu SM: Eingabe
  End If                                                        'Ende Wenn

' c) Prüfen, ob eingegebener Wert zulässig ist
  x = CInt(c)                                                   'Wandle Benutzereingabe von String in Integer um
  If x < 1 Or x > UBound(strArr) + 1 Then                       'Wenn Eingabe < 1 oder > Anzahl der Optionen
    MsgBox "Ungültige Auswahl: " & x                            '  Zeige Meldung
    GoTo pMenu_Mini_Input                                       '  Gehe zu SM: Eingabe
  End If                                                        'Ende Wenn


Exit_pMenu_Mini:                                              'SM: Ausgang
  pMenu_Mini = x                                                'Rückgabewert setzen
End Function


Private Sub Demo_pMenu_Mini()
  Const strOpt As String = "Nix,Dieses,Jenes,Alles"
  MsgBox "Deine Wahl" & Chr(10) & pMenu_Mini(strOpt)
End Sub