German CustomDialog mit 3 Auswahlmöglichkeiten

peternmb

Well-Known Member
Licensed User
Longtime User
Hallo,

klann ich irgendwie bei einem CustomDialog wo auch cancel belegt ist verhindern, dass sich bei einem Klick neben den Dialog dieser schließt und do2 ausgeführt wird.
Nur schliessen ohne eine Aktion wäre OK
B4X:
ret = cd.Show("Wähle aus 3 Möglichkeiten","Option 1","Option 2", "Option 3",Bild8)
If ret = DialogResponse.POSITIVE Then
   do1
Else if ret = DialogResponse.CANCEL Then   
   do2       
Else If ret = DialogResponse.NEGATIVE Then
   do3
END IF
 

BlueVision

Active Member
Licensed User
Longtime User
Hmm...
Diese Dialogvariante habe ich so noch nie ausprobiert. Hast Du es mal mit einer asynchronen Message probiert? Die bekomme ich im Programm normalerweise nicht weggedrückt, es sei denn ich beantworte sie über die angebotenen Buttons...
Das Konstrukt ist ziemlich flexibel und kann für Alles mögliche genutzt werden, ob da nun CANCEL mit dabei ist oder nicht, völlig belanglos. Musst nur die entsprechenden Platzhalter (Auswahl1, Auswahl2 und Auswahl3) entsprechend abfangen. Leere Platzhalter ("") tauchen in der Message selbst nicht auf. So kannst Du ziemlich komfortabel die Anzahl der Antwortmöglichkeiten (Buttons) konfigurieren. Ist wahrscheinlich bei Deiner Variante ähnlich. Ich persönlich verwende diese Konstruktion ganz gern, sowohl unter B4A als auch unter B4J.

B4X:
'MsgBox einblenden
Dim icon As B4XBitmap = XUI.LoadBitmapResize(File.DirAssets, "info.png", 60dip, 60dip, True)
Dim SF As Object = XUI.Msgbox2Async("Erläuterungstext", "TOPIC", "Auswahl1", "Auswahl2", "Auswahl3", icon)
Wait For (SF) Msgbox_Result (Result As Int)
If Result = XUI.DialogResponse_Negative Then
    Do1
End If
If Result = XUI.DialogResponse_Positive Then
    Do2
End If
If Result = XUI.DialogResponse_Cancel Then
    Do3
End If
 
Last edited:

Filippo

Expert
Licensed User
Longtime User
Ich denke, es ist besser so, denn man muss, um den Dialog zu schliessen, eine Auswahl treffen.
B4X:
    Dim icon As B4XBitmap = xui.LoadBitmapResize(File.DirAssets, "info.png", 60dip, 60dip, True)
    Msgbox2Async("Erläuterungstext", "TOPIC", "Auswahl1", "Auswahl2", "Auswahl3", icon, False)
    Wait For Msgbox_Result (Result As Int)
    If Result = xui.DialogResponse_Negative Then
        Do1
    else If Result = xui.DialogResponse_Positive Then
        Do2
    else If Result = xui.DialogResponse_Cancel Then
        Do3
    End If
 

BlueVision

Active Member
Licensed User
Longtime User
LOL... Filippo, und jetzt überlege ich gerade wegen Deines Posts, warum ich da eigentlich noch ein "SF" drin habe... (uralter Code). Kein Plan... Egal, funktioniert.

Und als Ausrede kann ich dann immer noch sagen: "It's to confuse the russians..."

Und das muss ich jetzt erklären, weil das sonst wieder jemand in den falschen Hals bekommt. Zur Zeit des kalten Kriegs wurde guter Programmcode für Computer gern auch in nachgebauten Geräten aus dem Ostblock verwendet. Das gilt insbesondere für Betriebssysteme. Habe zum Beispiel im Code eines Compilers von ROBOTRON sogar beim Öffnen mit dem Texteditor Sachen gefunden wie: "Copyright (c) 1984 by International Business Machines". Also eine 100%ige Eigenentwicklung von ROBOTRON... garantiert.
Wenn da dann auf einmal jemand einen Codeschnipsel entdeckte, der eigentlich gar keinen Sinn machte oder als Fragment vom Entwickeln der Software noch irgendwie unbemerkt übrig blieb, dann kam vom Entwickler dann genau das obige Zitat...
 
Last edited:

peternmb

Well-Known Member
Licensed User
Longtime User
Danke für die Antworten.
Das das mit MsgBox2Async so funktioniert ist mir schon klar - mein Problem bezieht sich auf einen CustomDialog...

Vermutlich werde ich einfach über den Hintergrund z.B. ein 50% schwarz-Panel legen damit die Taps darauf nichts bewirken.
 

BlueVision

Active Member
Licensed User
Longtime User
Danke für die Antworten.
Das das mit MsgBox2Async so funktioniert ist mir schon klar - mein Problem bezieht sich auf einen CustomDialog...

Vermutlich werde ich einfach über den Hintergrund z.B. ein 50% schwarz-Panel legen damit die Taps darauf nichts bewirken.
Geht natürlich auch. Jeder wie er mag...
 
Top