🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.

🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

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

Alles zur Programmierung im LibreOffice.
Antworten
Proma
Beiträge: 37
Registriert: Di 24. Sep 2024, 16:53

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

Beitrag von Proma » So 4. Mai 2025, 12:13

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
Zuletzt geändert von Proma am Mo 5. Mai 2025, 20:09, insgesamt 1-mal geändert.

mikele
* LO-Experte *
Beiträge: 1927
Registriert: Mo 1. Aug 2011, 20:51

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

Beitrag von mikele » Mo 5. Mai 2025, 14:59

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
Gruß,
mikele

Proma
Beiträge: 37
Registriert: Di 24. Sep 2024, 16:53

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

Beitrag von Proma » Mo 5. Mai 2025, 20:03

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




An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten