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

JOTHA

Well-Known Member
Licensed User
Longtime User
DialogResponse.POSITIVE
Ich habe dieses Problem nicht, wenn ich alle drei Möglichkeiten einbinde nach folgendem Muster:


B4X:
If Result = XUI.DialogResponse_POSITIVE Then
...
Else If Result = XUI.DialogResponse_CANCEL Then
...
Else If Result = XUI.DialogResponse_NEGATIVE Then
...
End If
 

strupp01

Active Member
Licensed User
Longtime User
Probiere es mal hier mit


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

Alexander Stolte

Expert
Licensed User
Longtime User
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:
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
 

peternmb

Well-Known Member
Licensed User
Longtime User
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.
 

Alexander Stolte

Expert
Licensed User
Longtime User
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.
 

peternmb

Well-Known Member
Licensed User
Longtime User
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?
 

Alexander Stolte

Expert
Licensed User
Longtime User
Oder gibt es dafür eine bessere Alternative?
 

peternmb

Well-Known Member
Licensed User
Longtime User
gibt es vielleicht auch eine Alternative ohne im bestehenden Code viel verändern zu müssen?
Ich würde das Dateiauswahlpanel gerne so belassen.
 

JOTHA

Well-Known Member
Licensed User
Longtime User
... 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 ...
Abfrage der Eigenschaft:
If Button1.Color = Colors.Black Then
(code)
End if
 

peternmb

Well-Known Member
Licensed User
Longtime User
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 ...
Abfrage der Eigenschaft:
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 😮💨
 

peternmb

Well-Known Member
Licensed User
Longtime User
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:
 
Top