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
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
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
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...