German wait for

peternmb

Well-Known Member
Licensed User
Longtime User
Hallo,

ich komme einfach nicht weiter.
In meiner App kann zwischen 3 verschiedenen CustomDialogen zur Eingabe von Daten gewählt werden.
Aber die App marschiert schon weiter bevor die Dialoge beendet sind, dann fehlen da natürlich deren Eingaben.

Wie kann ich es erreichen, dass es erst weitergeht wenn der Eingabedialog beendet ist?
hier mein gekürztes Beispiel:
B4X: Copy
Wait For Msgbox_Result (Result As Int)
If Result = DialogResponse.POSITIVE Then
    formular1     'CustomDialog
Else If Result = DialogResponse.NEGATIVE Then
    formular2     'CustomDialog
Else
    formular3     'CustomDialog
End If

Wait For ???

'hier geht der Code mit der Verarbeitung der Daten dann weiter
 
DialogResponse.POSITIVE
Ich habe dieses Problem nicht, wenn ich alle drei Möglichkeiten einbinde nach folgendem Muster:


B4X: Copy
If Result = XUI.DialogResponse_POSITIVE Then
...
Else If Result = XUI.DialogResponse_CANCEL Then
...
Else If Result = XUI.DialogResponse_NEGATIVE Then
...
End If
 
Probiere es mal hier mit


B4X: Copy
       Dim Result As Int
        Result = Msgbox2("Möchten Sie wirklich diese Kategorie löschen ?", "Sicherheitsabfrage", "Löschen", "Abbruch", "",Null)

        If Result = DialogResponse.POSITIVE Then

Die Abfrage muss natürlich auf dein Programm angepasst werden.
 
Probiere es mal hier mit
Probiere du es mal mit xui.Msgbox2Async, da wird dir sogar in der beschreibung fertiger code zum Kopieren mitgeliefert.
B4X: Copy
Dim sf As Object = xui.Msgbox2Async("Delete file?", "Title", "Yes", "Cancel", "No", Null)
Wait For (sf) Msgbox_Result (Result As Int)
If Result = xui.DialogResponse_Positive Then
    Log("Deleted!!!")
End If
 
Bisher verwende ich Msgbox2Async - was ist bei XUI.Msgbox2Async anders?

Das Problem scheint allerdings doch etwas komplexer zu sein.
Bei einer Auswahlmöglichkeit werden hintereinander 2 CustomDialoge aufgerufen und genau dort ist das Problem.
Bei den einfachen Varianten funktioniert es, bei den 2 Dialogen nicht mehr.
 
Bisher verwende ich Msgbox2Async - was ist bei XUI.Msgbox2Async anders?
Ist genau das gleiche, nur das es in B4A, B4I und B4J funktioniert. Und es gibt in der Beschreibng code der threads wie diese verhindert.

Bei einer Auswahlmöglichkeit werden hintereinander 2 CustomDialoge aufgerufen und genau dort ist das Problem.
Bei den einfachen Varianten funktioniert es, bei den 2 Dialogen nicht mehr.
Verstehe nicht das Problem, wenn du zuerst die 1. MSGBox anzeigst, ein wait for hinzufügst, diesen auswertest und dann erst die 2. MSGBox anzeigst.
 
jetzt bin ich in der Problemsuche schon etwas weiter gekommen :confused:
Ist eine App, die über Jahre immer mehr erweitert wurde und entsprechend verschachtelt ist....

Vor dem CustomDialog wird ein Panel mit einer Dateiauswahl in einem ListView und 3 Buttons (übernehmen, löschen, abbrechen) aufgerufen.
Wie kann ich erreichen, dass meine App erst weitermacht wenn einer der Buttons geklickt wurde?
Ich habe versucht das ebenfalls in einem CustomDialog zu zeigen doch da kann ich das ListView nicht auswerten.
Oder gibt es dafür eine bessere Alternative?
 
Oder gibt es dafür eine bessere Alternative?
 
gibt es vielleicht auch eine Alternative ohne im bestehenden Code viel verändern zu müssen?
Ich würde das Dateiauswahlpanel gerne so belassen.
 
... dass meine App erst weitermacht wenn einer der Buttons geklickt wurde?
Nur mal so als spontane Idee:
Du könntest dem Button nach dem Klicken eine Eigenschaft (z.B. eine andere Farbe) zuweisen und dann diese Eigenschaft abfragen mit ...
Code: Copy
If Button1.Color = Colors.Black Then
(code)
End if
 
Nur mal so als spontane Idee:
Du könntest dem Button nach dem Klicken eine Eigenschaft (z.B. eine andere Farbe) zuweisen und dann diese Eigenschaft abfragen mit ...
Code: Copy
If Button1.Color = Colors.Black Then
(code)
End if
Klingt interessant - ich glaube aber, dass der Ablauf vorher schon weitergeht oder ich müsste das dann irgendwie in eine Schleife packen...
Muss ich Morgen am Rechner testen, jetzt sitze ich am Tablet ?‍?
 
funktioniert so leider nicht.

Ich habe jetzt die entsprechnde Routine in eine eigene sub ausgelagert und die Ablaufreihenfolge angepasst - hätte ich vielleicht gleich so machen sollen
:confused:
 
Back
Top