OpenMobileWindow() Rückgabe eines Wertes
-
- Senior Member
- Beiträge: 312
- Registriert: 24. September 2015, 10:05
- Wohnort: Biberbach, Austria
- Kontaktdaten:
OpenMobileWindow() Rückgabe eines Wertes
Wie kann ich hier einen Rückgabewert erhalten:
sAnswer is string =""
OpenMobileWindow(WIN_GetString,"Name", sAnswer) // Öffnet ein Fenster und fordert zur Texteingabe auf
Eine Globale Variable möchte ich nicht verwenden, result("xy") gibt es bei OpenMobileWindow() nicht, Parameter werden per Value übergeben, also geht das mit sAnswer nicht.
Gibt es da nich andere Möglichkeiten?
sAnswer is string =""
OpenMobileWindow(WIN_GetString,"Name", sAnswer) // Öffnet ein Fenster und fordert zur Texteingabe auf
Eine Globale Variable möchte ich nicht verwenden, result("xy") gibt es bei OpenMobileWindow() nicht, Parameter werden per Value übergeben, also geht das mit sAnswer nicht.
Gibt es da nich andere Möglichkeiten?
-
- Site Admin
- Beiträge: 529
- Registriert: 23. Februar 2010, 08:06
- Wohnort: Langenthal, Schweiz
- Kontaktdaten:
Re: OpenMobileWindow() Rückgabe eines Wertes
Ich sehe keinen anderen Weg. Wobei die globale Variable im aufrufenden Fenster definiert sein kann und so nur ab dem Mutterfenster sichtbar ist.
-
- Senior Member
- Beiträge: 312
- Registriert: 24. September 2015, 10:05
- Wohnort: Biberbach, Austria
- Kontaktdaten:
Re: OpenMobileWindow() Rückgabe eines Wertes
Tja, ich möchte aber einen einfachen wiederverwendbaren Code. In diesem simplen Beispiel einfach ein Fenster öffnen un dem Anwender einen Text eingeben lassen:
EnterText=winGetText("Name")
EnterText sollte der Wert sein der Eingegeben wurde, "Name" ist nur eine Beschriftung.
Das muss doch irgendwie ohne public gehen.
....
Eventuell mit SaveParameter("winGetText", EDT_Text )
Dann könnte man
sText= WinGetText("Passwort")
schreiben
Ich hab's jetzt so gemacht:
Das ganze in einer Funktion kapseln, ist einfach zu handhaben, hier ein Beispielaufruf
Hier kapseln um den Return Wert mit LoadParameter() zu holen:
Code des eigentlichen Fensters:
Und im OK oder Cancel Button des Fensters einfach:
Ich hoffe ich habe mich nicht zu verwirrt ausgedrückt. Es ist schon spät, aber es funktioniert.
EnterText=winGetText("Name")
EnterText sollte der Wert sein der Eingegeben wurde, "Name" ist nur eine Beschriftung.
Das muss doch irgendwie ohne public gehen.
....
Eventuell mit SaveParameter("winGetText", EDT_Text )
Dann könnte man
sText= WinGetText("Passwort")
schreiben
Ich hab's jetzt so gemacht:
Das ganze in einer Funktion kapseln, ist einfach zu handhaben, hier ein Beispielaufruf
Code: Alles auswählen
IF WinGetText("Passwort") = "xxxx" THEN
nPid is int = ExeRun("com.android.settings",exeActive,exePID)
IF 0 >= nPid THEN
ToastDisplay("Fehler beim Starten: " + ErrorInfo())
END
ELSE
Info("Falsches Paßwort")
END
Code: Alles auswählen
PROCEDURE WinGetText(sName is string = "", sDefaultValue is string ="")
OpenMobileWindow(WIN_GetString,sName,sDefaultValue)
RESULT LoadParameter("winGetText")
Code des eigentlichen Fensters:
Code: Alles auswählen
PROCEDURE MyWindow(sBeschriftung,sDefaultValue is string = "")
gbWaitForAnswer is boolean = True
STC_Text=sBeschriftung
EDT_Text=sDefaultValue
// End initialize
SaveParameter("winGetText", "" ) // auf jeden Fall leeren, Wert wir nur mit OK Button gespeichert
WHILE gbWaitForAnswer // make win modal (Android)
Multitask(-10)
END
Close() // und tschüss
Code: Alles auswählen
Click Validate
SaveParameter("winGetText", EDT_Text ) // OK? Wert speichern
gbWaitForAnswer = False
Click cancel
SaveParameter("winGetText", "" ) // Abbruch? Wert auf null setzen
gbWaitForAnswer = False
-
- Site Admin
- Beiträge: 529
- Registriert: 23. Februar 2010, 08:06
- Wohnort: Langenthal, Schweiz
- Kontaktdaten:
Re: OpenMobileWindow() Rückgabe eines Wertes
Guter Ansatz. Das Problem ist, weil alle Fenster in Android und IOS nicht modal sind. Du weisst eben nicht, wann das Fenster einen gültigen Wert bringt. Bei dir zwingend wohl durch den OK-Button. Eventuell müsstest abfangen, dass der Wert wieder geleert wird, wenn einer bereits eingegeben wurde, der Benutzer das Fenster aber ohne OK schliesst, sofern er das hier kann.
-
- Senior Member
- Beiträge: 312
- Registriert: 24. September 2015, 10:05
- Wohnort: Biberbach, Austria
- Kontaktdaten:
Re: OpenMobileWindow() Rückgabe eines Wertes
Habe das Fenster künstlich "Modal" gemacht und alles außer ok leert den String wieder. Aber so kann ich das Fenster auf einfache Art mehrfach verwenden.
Wird außerhalb des Fensters geklickt entspricht das einem Abbruch, Fenster wird geschlossen und der Wert ist "".
Code: Alles auswählen
SaveParameter("winGetText", "" ) // auf jeden Fall leeren, Wert wir nur mit OK Button gespeichert
WHILE gbWaitForAnswer // make win modal
Multitask(-10)
END
Close() // und tschüss
- klammerauf
- Member
- Beiträge: 116
- Registriert: 28. November 2010, 15:11
- Wohnort: bei Karlsruhe
- Kontaktdaten:
Re: OpenMobileWindow() Rückgabe eines Wertes
--
WinDev 23, WM Apps für Android und iOS, Anwendungen für Windows CE Mobile Barcode Scanner, Python 3 mit Oracle
WinDev 23, WM Apps für Android und iOS, Anwendungen für Windows CE Mobile Barcode Scanner, Python 3 mit Oracle
-
- Senior Member
- Beiträge: 312
- Registriert: 24. September 2015, 10:05
- Wohnort: Biberbach, Austria
- Kontaktdaten:
Re: OpenMobileWindow() Rückgabe eines Wertes
Ja, Danke. Das ist natürlich für das obige Beispiel perfekt. Damit wollte ich eigentlich nur die Möglichkeit demonstrieren, wie man einen Rückgabewert erhalten kann, dazu habe ich das eigentlich Fenster stark vereinfacht. Allerdings ändert das nichts an dem Dilemma, dass unter Android und iOS Fenster keinen Rückgabewert haben können. Wenn man den benötigt kann man mit obiger Lösung arbeiten. Ist aber eben nur ein Workaround.