French Access to a View in several pages

CR95

Active Member
Licensed User
J'utilise un Drawer identique commun à plusieurs pages. Lorsque l'utilisateur clique sur un bouton du Drawer (quelque soit la page), une routine de cette page l'envoie dans une Sub pour gérer la réponse. L'appel à cette routine contient le code Id de la page en cours et le Tag du bouton
B4X:
Sub ClicBoutonVolume_Click
    Dim IdPage As String = B4XPages.GetManager.GetTopPage.Id
    Utils.ClicBoutonsFin(IdPage,Sender)
Dans la Sub de la page "Utils", le programme réalise le process attendu mais je ne sais pas comment programmer la mise à jour d'une View de la page appelante. Pour le moment, il y a un code spécifique pour chaque page :
B4X:
If IdPage = "video" Then        ' Drawer Vidéo
        Dim Page2 As Video
        Page2 = B4XPages.GetPage("Video") ' Accès aux constantes
        Page2.VideoDrawer.LeftOpen=False
        If Page2.LastTab.IsInitialized Then    ' Efface la ligne = "selected" du Tab
            v = Page2.LastTab.GetView(3)    ' Le panel inférieur (Tab Selected) est le 4éme
            v.Color=Page2.TabsFondColor         ' Remet la couleur de fond = "unselected"
        End If
Else                            ' Drawer MP3
    Dim Page1 As MusicMP3
Ce n'est pas très "élégant" de programmer autant de retours que de pages appelantes.
La question est comment programmer un retour universel à partir du code ID de la page ?
Il faudrait programmer une page "universelle" et le compilateur n'accepte que les pages déclarées (Page1, Page2,.....)
 

klaus

Expert
Licensed User
Longtime User
Désolé, mais je ne comprends pas ce que tu veux faire.
Je n'ai jamais utilisé Drawer, et lequel ?
Il me semble qu'il en existe plusieurs.

Le plus simple serait que tu nous envoies ton projet et nous pourrions regarder le problème.
Sans savoir exactement ce que tu veux faire, ce que tu as déjà fait et comment, j'ai ne sais pas comment aider.
 

CR95

Active Member
Licensed User
Merci. C'est vrai que ce n'est pas clair
Ma question ne porte pas sur le Drawer mais sur la programmation du "retour" dans une page "appelante". J'ai donné le code à titre d'exemple.
Les 2 lignes qui me posent probléme sont :
B4X:
        Dim Page2 As Video
        Page2 = B4XPages.GetPage("Video") ' Accès aux constantes
        Page2.bla bla bla
que je répète pour chaque page
B4X:
   Dim Page1 As MusicMP3
   Page1 = B4XPages.GetPage("MusicMP3") ' Accès aux constantes
   Page1.bla bla bla
Comme il y a plusieurs pages appelantes, le besoin est d'avoir un code d'accès à une page "générale" à la place de "Page1" ou "Page2" sachant que l'on connait le "Id" de cette page générale où on veut revenir.
Je pars en province pendant 8 jours sans accès à l'informatique. Donc je ne pourrai pas répondre tout de suite à un éventuel mail.
Bonnes fêtes
 

klaus

Expert
Licensed User
Longtime User
Je pense avoir compris mais je n'en suis pas sûr.
Tu pourrais regarder dans le code source du projet B4XPagesNavBar dans le B4XPages Cross-platform Projects booklet.
Là, je définis une variable publique, Public CurrentPage As Object, dans B4XMainPage.

Mais, comme déjà dit, le mieux serait de poster ton projet.
 

CR95

Active Member
Licensed User
Tu as bien compris le besoin.
C'est effectivement du meme type que celui décrit dans B4XPages Cross-platform Projects booklet.
B4X:
Select Index
Case 1
MP.CurrentPage = MP
B4XPages.ShowPage("MainPage")
Case 2
MP.CurrentPage = MP.Page2
B4XPages.ShowPage("Page 2")
Case 3
MP.CurrentPage = MP.Page3
B4XPages.ShowPage("Page 3")
Case 4
MP.CurrentPage = MP.Page4
B4XPages.ShowPage("Page 4")
End Select
L'idée serait de programmer de façon unique l'association MP.CurrentPage avec le "Id" de la page appelante, et donc d'accéder aux views de cette dernière (dans mon cas, il ne s'agit pas de les montrer). C'est d'ailleurs cohérent avec l'explication à la page 23 du meme booklet
B4X:
Public Page2 As B4XPage2 = B4XPages.GetPage("Page 2")
Page2.lblTest.Text = "Page 3 was displayed."
In B4XPages.GetPage("Page 2") the parameter in quotes is the page ID, the first parameter, you
gave when you initialized the page in the B4XMainPage module:
Ainsi, on n'aurait pas autant de codes quasiment "identiques" que de pages à traiter (là, il n'y a que 2 lignes pas page mais s'il y en a beaucoup, c'est de la répétition
Dans tous les cas, merci de ton aide précieuse.
Bonne année
 
Top