Non credo; sarai in grado di usarlo in meno di un minuto.Proverò sicuramente anche quello (e starò qui a fare domande)!
Non credo; sarai in grado di usarlo in meno di un minuto.Proverò sicuramente anche quello (e starò qui a fare domande)!
For Each objFTF as Object...For Each objFTF As B4XFloatTextField In Root.GetAllViewsRecursive
For Each objFTF as Object...
perché devi verificare che objFTF sia un... ftf e poi convertire (dim ftf As B4XFloatTextField = objFTf e poi usare la proprietà di ftf)Così mi dà errore perché non riconosce la proprietà "HintText"... ?
Appunto. In questo modo dici che ogni oggetto della recursive è un B4xFTF.For Each objFTF As B4XFloatTextField
B4XFloatTextField1.HintText = language.Value(B4XFloatTextField1.HintText)
B4XFloatTextField1.Update
B4XFloatTextField2.HintText = language.Value(B4XFloatTextField2.HintText)
B4XFloatTextField2.Update
For Each objFTF As Object In Root.GetAllViewsRecursive
If objFTF Is B4XFloatTextField Then
Dim ftf As B4XFloatTextField = objFTF
Log(ftf.HintText)
ftf.HintText = language.Value(ftf.HintText)
ftf.Update
End If
Next
Io la uso sempre in questo modo, perchè così mi rispario di scrivere nel designer e posso controllare meglio il Textsize delle View.Più che complicarla, vorrei semplificarla. Non solo seguendo il n. 8 di questi suggerimenti ma il tuo suggerimento mi va bene se ho qualcosa di "piccolo" ma se ho 8 pagine con 10 o più controlli ciascuna, devo scrivere righe e righe di codice. Così, invece, ho uno snippet che ripeto in ciascuna pagina (oppure creo una sub nella clsLanguage2 che richiamo in ciascuna pagina) e fa da solo pescando dal file creato conla tua ottima app.
Mah, strano. Forse nel ciclo qualcosa viene messo in cache ed è più veloce. Aggiungici uno Sleep(0) (o qualcosina di più, max 30).Ottimo! Grazie!
Ultimissima cosa: il B4XFloatTextField cambia l'HintText se lo aggiorno con .Update, infatti questo codice funziona.
B4X:B4XFloatTextField1.HintText = language.Value(B4XFloatTextField1.HintText) B4XFloatTextField1.Update B4XFloatTextField2.HintText = language.Value(B4XFloatTextField2.HintText) B4XFloatTextField2.Update
Questo, invece, no:
? ? ?B4X:For Each objFTF As Object In Root.GetAllViewsRecursive If objFTF Is B4XFloatTextField Then Dim ftf As B4XFloatTextField = objFTF Log(ftf.HintText) ftf.HintText = language.Value(ftf.HintText) ftf.Update End If Next
Mi costringi a fare una provola ?Neanche con Sleep(3000)...
Confermo. Indago...Neanche con Sleep(3000)...
Grazie!Confermo. Indago...
Scusa, ma in questo caso per risparmiare 2 righe ne scrivi 6?Neanche con Sleep(3000)...
B4XFloatTextField1.HintText = language.Value("Username")
B4XFloatTextField2.HintText = language.Value("Password")
For Each Vw As View In Root.GetAllViewsRecursive
If Vw.Tag Is B4XFloatTextField Then
Dim ftf As B4XFloatTextField = Vw.Tag
ftf.HintText = language.Value(ftf.HintText)
ftf.Update
End If
Next
Sarà stato un esempio, visto anche che B4XFloatTextField1, come nome di una View, è orripilante e gli manderei un drone che lo bacchettasse ?Scusa, ma in questo caso per risparmiare 2 righe ne scrivi 6?
B4X:B4XFloatTextField1.HintText = language.Value("Username") B4XFloatTextField2.HintText = language.Value("Password")
B4X:For Each Vw As View In Root.GetAllViewsRecursive If Vw.Tag Is B4XFloatTextField Then Dim ftf As B4XFloatTextField = Vw.Tag ftf.HintText = language.Value(ftf.HintText) ftf.Update End If Next
Numero 1!!!Il motivo è che
If objFTF Is B4XFloatTextField Then
non funziona, ergo non entra mai all'interno del blocco If-End If.
Corretta osservazione.Scusa, ma in questo caso per risparmiare 2 righe ne scrivi 6?
B4X:B4XFloatTextField1.HintText = language.Value("Username") B4XFloatTextField2.HintText = language.Value("Password")
B4X:For Each Vw As View In Root.GetAllViewsRecursive If Vw.Tag Is B4XFloatTextField Then Dim ftf As B4XFloatTextField = Vw.Tag ftf.HintText = language.Value(ftf.HintText) ftf.Update End If Next
Error occurred on line: 29 (mdlTranslate)
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at anywheresoftware.b4a.keywords.Common.CallSubDebug2(Common.java:460)
at b4j.B4XPageLanguageFil.b4xpagesmanager._createpageifneeded(b4xpagesmanager.java:868)
at b4j.B4XPageLanguageFil.b4xpagesmanager._showpage(b4xpagesmanager.java:347)
at b4j.B4XPageLanguageFil.b4xpagesmanager._addpage(b4xpagesmanager.java:176)
at b4j.B4XPageLanguageFil.b4xpagesmanager._addpageandcreate(b4xpagesmanager.java:190)
at b4j.B4XPageLanguageFil.b4xpagesmanager._initialize(b4xpagesmanager.java:126)
at b4j.B4XPageLanguageFil.main._appstart(main.java:86)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:632)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:237)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:167)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:91)
at anywheresoftware.b4a.shell.ShellBA.raiseEvent2(ShellBA.java:98)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:78)
at b4j.B4XPageLanguageFil.main.start(main.java:38)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at anywheresoftware.b4a.debug.Debug.CallSub4(Debug.java:134)
at anywheresoftware.b4a.debug.Debug.CallSubNew2(Debug.java:81)
... 35 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at anywheresoftware.b4a.debug.Debug.CallSub4(Debug.java:115)
... 36 more
Caused by: java.lang.ClassCastException: anywheresoftware.b4j.objects.PaneWrapper$ConcretePaneWrapper$NonResizePane cannot be cast to javafx.scene.control.Control
at b4j.B4XPageLanguageFil.mdltranslate._translateallcontrols(mdltranslate.java:110)
at b4j.B4XPageLanguageFil.b4xmainpage$ResumableSub_B4XPage_Created.resume(b4xmainpage.java:86)
at b4j.B4XPageLanguageFil.b4xmainpage._b4xpage_created(b4xmainpage.java:50)
... 41 more
'Static code module
Sub Process_Globals
Private fx As JFX
Public language As clsLanguage2
End Sub
Public Sub TranslateAllControls(myRoot As B4XView)
language.Initialize
For Each objTEXT As B4XView In myRoot.GetAllViewsRecursive
If (objTEXT Is Button Or objTEXT Is Label Or objTEXT Is CheckBox) Then
Log(objTEXT.Text)
objTEXT.Text = language.Value(objTEXT.Text)
Else If objTEXT Is ComboBox Then
Private cmbbx As ComboBox = objTEXT
Private cmbbxLst As List = cmbbx.Items
For i = 0 To cmbbxLst.Size - 1
Log(cmbbx.Items.Get(i))
cmbbx.Items.Set(i, language.Value(cmbbx.Items.Get(i)))
Next
End If
Next
For Each objTOOLTIPTEXT As Control In myRoot.GetAllViewsRecursive
If (objTOOLTIPTEXT Is Button Or objTOOLTIPTEXT Is Label Or objTOOLTIPTEXT Is CheckBox) Then
Private myString As String = objTOOLTIPTEXT.TooltipText
If myString.Length > 0 Then
Log(myString)
objTOOLTIPTEXT.TooltipText = language.Value(objTOOLTIPTEXT.TooltipText)
End If
End If
Next
For Each vw As B4XView In myRoot.GetAllViewsRecursive
If vw.tag Is B4XFloatTextField Then
Dim ftf As B4XFloatTextField = vw.Tag
Log(ftf.HintText)
ftf.HintText = language.Value(ftf.HintText)
ftf.Update
End If
Next
End Sub
Wait For (mdlTranslate.TranslateAllControls(Root)) Complete
"... As Control..."?For Each objTOOLTIPTEXT As Control In myRoot.GetAllViewsRecursive