German ClsWheel auf bestimmte Werte begrenzen

peternmb

Well-Known Member
Licensed User
Longtime User
Hallo, ich möchte nur einen bestimmten Zahlenbereich anzeigen/auswählen lassen.
So wie ich das verstanden habe, muss ich diesen als Array übergeben - klappt aber nicht...
B4X:
Dim lstMax As List
lstMax.Add(1)
lstMax.Add(2)
lstMax.Add(3)
  
sNumber.Initialize(Me, Activity, "Auswahl:", 1, lstMax, 48, 6, True)
sNumber.SetFixedFormat(0, False, True)
sNumber.Show2("sNumber", "1")
 

klaus

Expert
Licensed User
Longtime User
Dieser code funktioniert:
B4X:
Dim lstMax(1) As List
lstMax(0).Initialize
lstMax(0).Add("1")
lstMax(0).Add("2")
lstMax(0).Add("3")
    
sNumber.Initialize(Me, Activity, "Auswahl:", 1, lstMax, 48, 4, False)
sNumber.Show2("sNumber", "2")
lstMax muss eine Array von List sein, auch wenn es nur eine Zahl ist.
Der WheelType muss 4 (CUSTOM) sein.
Die Werte in der List müssen Strings sein.
 

peternmb

Well-Known Member
Licensed User
Longtime User
Super, so funktioniert es.

Ich habe noch einige Fragen:
- warum hast du in deinem Beispiel für numbers eine eigene Activity genommen?

- kann ich den zuletzt verwendeten Wert einfach speichern um das wheel dann beim nächsten Aufruf damit vorzubelegen.
bisher speichere ich solche Daten als list ab, aber ist das auch bei nur einem Wert notwendig oder geht das einfacher?

- ich möchte beim ersten Aufruf (start der App), die Möglichkeit einbauen, den 6-stelligen geforderten Code auch als QR-Code einzulesen.
Dafür verwende ich den in diesem Fall nicht benötigten Button "cancel" und gebe statt dessen dort die Caption "QR-Code" vor.
Da ich das wheel aber auch danach noch einsetzte soll die Caption nur beim ersten Aufruf anders sein, wie kann ich das am besten lösen?
 

klaus

Expert
Licensed User
Longtime User
- warum hast du in deinem Beispiel für numbers eine eigene Activity genommen?
Kein bestimmter Grund, Numbers war der letzte WheelType den ich eingebaut hatte, und für den hatte ich eine neue Activity benutzt.
- kann ich den zuletzt verwendeten Wert einfach speichern um das wheel dann beim nächsten Aufruf damit vorzubelegen.
Den kanst du in eine Globale String Variable speichern und beim nächsten Aufruf benutzen.
Zum Beispiel:
LetzterWert = Selection
und
whlNumber.Show2("whlNumber", LetzterWert)
- ich möchte beim ersten Aufruf (start der App), die Möglichkeit einbauen, den 6-stelligen geforderten Code auch als QR-Code einzulesen...
Du könntest eine Boolean Variable benutzen, die vor dem ersten Duchlauf False ist und im ersten Duchlauf auf True gesetzt wird.
Und in der Event Routine, je nach dem Wert der Boolean Variable, entsprechend zu handeln.
 

peternmb

Well-Known Member
Licensed User
Longtime User
Den kanst du in eine Globale String Variable speichern und beim nächsten Aufruf benutzen.
Zum Beispiel:
LetzterWert = Selection
und
whlNumber.Show2("whlNumber", LetzterWert)
ja, das ist mir klar - aber wie speichere ich "LetzterWert" am einfachsten

Du könntest eine Boolean Variable benutzen, die vor dem ersten Duchlauf False ist und im ersten Duchlauf auf True gesetzt wird.
Und in der Event Routine, je nach dem Wert der Boolean Variable, entsprechend zu handeln.
hätte ich auch selber darauf kommen können - funktioniert prima.
 

klaus

Expert
Licensed User
Longtime User
- kann ich den zuletzt verwendeten Wert einfach speichern um das wheel dann beim nächsten Aufruf damit vorzubelegen.
Was meinst Du mit: beim nächsten Aufruf?
Meinst Du beim nächsten Aufruf des Programms ode beim nächsten Aufruf des Wheels?
Ich hatte das zweite verstanden.
Falls Du das erste meinst, kanst du sie in einer Datei in Files.DirInternal speichern, und beim Aufruf des Programms checken ob die Datei existiert, und wenn ja, die Datei einlesen.
Es gibt auch die KeyStoreValue Klasse, hab sie aber noch nie benutzt.
 
Top