B4X : Articulation d’un programme multiplateformes, multipages

L’utilisateur exigeant de B4A se rend vite compte de ses limites, et il est fortement conseillé de se diriger très rapidement vers le compilateur MultiPlateformes B4X beaucoup plus puissant (mais aussi un chouillat plus compliqué)

Créer un programme

  • Fichier
    • Nouveau
      • B4XPages

Ajouter une Page


  • C’est l’intérêt du programme
  • PROJET
    • Ajouter un nouveau Module
      • Module de Classe
        • B4XPage
        • Il est d’usage de préfixer ce module par “B4X” pour montrer qu’il s’agit de code et non de design
          • B4XPage1
        • Le CODE de la page B4XPage1 est inclus dans le fichier B4A du projet en temps que nouvelle CLASSE “B4XPage1”
        • Le Layout (présentation) de la page correspondante dans le Designer est sauvegardé sous la forme d’un fichier .BAL dans le Gestionnaire de fichier
        • Il faudra donc penser à lier les 2 avant toute utilisation
    • Ajouter un Nouveau LAYOUT
      • DESIGNER
        • Ouvrir
          • Nouveau
      • On le nommera par exemple Page1
  • A ce stade notre projet XPAGES comporte 5 “parties”
    1. Module Main = sanctuaire intouchable
    2. Module B4XMainpage (code de la page principale)
    3. Module B4XPage1 (code de la page fille)
    4. Layout Mainpage (design de la page principale)
    5. Layout Page1 (design de la page fille)
  • Il est conseillé de garder une certaine rigueur dans le nommage des fichiers pour éviter les Spaghettis…
    • B4Xpage va avec Page

CODER LA PAGE PRINCIPALE


  • La page principale s’affichera en premier
  • Elle porte un bouton qui ouvre la page secondaire

Si la page principale (MainPage) est automatiquement créée et affichée au démarrage par la routine “Activity initialisée dans MAIN

MAIN

Sub Activity_Create(FirstTime As Boolean)
  Dim pm As B4XPagesManager
  pm.Initialize(Activity)
End Sub

Elle est chargée (Load) dans B4XMainPage qui va l’afficher automatiqument

Private Sub B4XPage_Created (Root1 As B4XView) 
  Root = Root1 Root.LoadLayout("MainPage")
  ...
End Sub

La page secondaire (Page1) est déclarée à ce moment

B4XMainPage

  • L’Object Page1 est construit à partir de la nouvelle CLASS B4XPage1 ajoutée précédemment (ce qui fait que les 2 vont être liés)
Sub Class_Globals

  Public Page1 As B4XPage1
End Sub
  • Puis on lui affecte une ID pour pouvoir l’ouvrir (Alambisme ésotérique qui surcharge un peu l’écriture pour donner l’impression au développeur qu’il est plus intelligent que les autres)
Private Sub B4XPage_Created (Root1 As B4XView)
  ...
  Page1.Initialize
  B4XPages.AddPage("Page 1", Page1)

Ou “Page 1” est la nouvelle identité de la Page B4XPage1 associée à l’Objet Page1 qui permettra de l’appeler sur le bouton d’ouverture

MainPage => Bouton d’ouverture

Private Sub Button1_Click

  B4XPages.ShowPage("Page 1")

End Sub

Indique au programme qu’il doit effectuer un SHOW (affichage) de la page qui porte l’étiquette “Page 1” dessinée dans B4XPage1.BAL et Codée dans Page1 qui est une instance de B4XPage1.BAS (Si vous n’avez rien compris ce n’est pas grave, l’important c’est que ça marche)


On résume


  1. Créer autant de Layout que de Classe (en préfixant les CLASSE avec B4X)
  2. Si la page principale est déclarée à l’ouverture, l’ouverture de la page secondaire doit suivre toutes les étapes de la création et de l’utilisation d’un objet

QUESTIONS

Ou se créent les pages ?

  1. La page principale dans le Module MAIN
  2. Les Pages secondaires dans le module Principal MainPage

Ou les pages secondaires sont elles liées à leur LAYOUT

  • Dans la section Create de la Page à lier avec l’instruction : Root.LoadLayout(“BAL_PAGE”)

Ou s’ouvrent les pages ?

  • Dans le MainPage avec l’instruction : B4XPages.ShowPage(“page Identité”)
  • L’identité d’une page secondaire se crée dans le MainPage / Create avec l’instruction :  B4XPages.AddPage(“Page identité”, Objet_page)

Ou se construit un objet page ?

  • L’OBJET est modelé dans un moule appelé CLASSE avec l’opérateur As
    • Si la CLASSE DE PAGE est B4XPage1, l’objet se construit dans Class_Globals par la ligne Public MaPage As B4XPage1

 

Laisser un commentaire