Nell'esempio di klaus questo non avviene: il drawer e i due layout (CenterPanel e LeftPanel) sono inizializzati nel modulo mdlDrawer mentre gli eventi dei pulsanti nei moduli B4XPageX. Quindi questa non è una regola.Questo potrebbe voler dire che gli eventi dei due layout (CenterPanel e LeftPanel) devono essere gestiti nel modulo dove è inizializzato il drawer?
This might mean that the events of two layouts (CenterPanel and LeftPanel) should be managed in the module where the drawer is initialized?
Iniziamo col chiamare le cose col loro nome, altrimenti ci perdiamo.Grazie mille!
Thank you very much!
Nell'esempio di klaus questo non avviene: il drawer e i due layout (CenterPanel e LeftPanel) sono inizializzati nel modulo mdlDrawer mentre gli eventi dei pulsanti nei moduli B4XPageX. Quindi questa non è una regola.
In klaus's example this is not true: the drawer and both layouts (CenterPanel e LeftPanel) are initialized in mdlDrawer module but the buttons events in B4XPage modules. Then, this is not a rule.
quella è una regola, gli eventi delle view (o B4XView) devono stare nella classe in cui il layout viene caricato.Quindi questa non è una regola.
Sarebbe diventato alquanto complicato. A seconda di chi avesse effettuato il login (magari specifico utente o "qualifica" dell'utente - amministratore o no, ad esempio) avresti non solo dovuto caricare layout diversi nella "parte sinistra del Drawer" (LeftPanel), cosa fattibile, ma anche gestire gli eventi delle view contenute in quei layout e spostando tutto in una classe anche tutti questi eventi sarebbero dovuti stare in questa classe, eventi che poi avrebbero dovuto chiamare routine delle varie pagine B4XPage.Utilizzando il primo sistema, avevo imbastito un'app che mostrava drawer diversi in funzione di chi aveva effettuato il login (in pratica il menu di opzioni mostrato sul drawer dipendeva dal profilo dell'utente); mi restava di passare tutto a classe, ma..ho perso interesse e mi sono dedicato ad altro.
Invece si dovrebbe ragionare un po' più a fondo sulle B4XPages per via della differenza sostanziale tra unico "oggetto visivo base" in B4A (Activity) e multiplo in B4J (Form) e al 99% in B4i, non avendolo non posso esserne certo al 100% e non so quale sia il suo tipo.come detto, ho perso interesse e sono passato ad altro.
Per prima cosa: grazie, perché apprendo sempre cose nuove e la cosa non può che farmi piacere!Iniziamo col chiamare le cose col loro nome, altrimenti ci perdiamo.
mdlDrawer, creato da te, precisamente è una Classe, non un Modulo di codice (*) (motivo per cui, tra l'altro, dargli quel nome, con quel prefisso "mdl" e dare alle sue istanze (oggetti) il prefisso "mod" è molto fuorviante).
(...)
(*) [Nota che un modulo di codice, oltre a non poter essere istanziato - ovvero creare oggetti da esso, "copie" diciamo, non può contenere-gestire eventi]
Ok, ma volevo solo limitarmi ad osservare che nell'ultimo esempio di klaus (quello che funziona) questo non è: gli eventi delle view centrali stanno nella classe B4XPage e non dove viene caricato il layout, ossia nella classe mdlDrawer. Posto che quindi è possibile, mi chiedevo se fosse più corretto parlare di best practice e code smell (visto che il codice funziona comunque) invece che di regola (ma mi rimetto a chi ne sa più di me).(...)
Nel progetto ci sono 4 istanze (oggetti) della classe mdlDrawer, ognuna dichiarata privata ed initializzata in una classe B4XPage. La classe mdlDrawer ha un oggetto di tipo B4XDrawer e lo "espone", dato che è dichiarato Public.
Gli eventi associati alle B4XView della "parte sinistra" del Drawer vengono gestiti nella tua classe mdlDrawer perché è in questa che viene caricato il layout, il cui nome gli viene passato dall'interno di quelle 4 B4XPage.
Quindi:
quella è una regola, gli eventi delle view (o B4XView) devono stare nella classe in cui il layout viene caricato.
No, sono utili, per metterci routine pubbliche di utilità per il progetto specifico o magari per qualunque progetto.Anzi, da qualche parte mi pare di aver letto che l'uso dei Moduli di codice è deprecato, ma non ricordando dove, non ci metto la mano sul fuoco.
Just to clarify.Ok, ma volevo solo limitarmi ad osservare che nell'ultimo esempio di klaus (quello che funziona) questo non è: gli eventi delle view centrali stanno nella classe B4XPage e non dove viene caricato il layout, ossia nella classe mdlDrawer.
... e questo dimostra quanto sia lucido io...Just to clarify.
The events must be in the module where the layout is loaded.
In the project I posted in post #10, a Drawer instance is initialized in each Page.
The LeftPanel layout is loaded in the Drawer module and the Drawer events are managed there.
The CenterPanel layouts are loaded in each Page module and the Page events are managed there.
You cannot load the Page layouts in the Drawer module and manage the events in the Page module, this was the original problem.
Non è ciò che mangia, è l'aria pura che respira, aria di montagna.Klaus, una domanda: cosa mangi?
Vorrei essere lucido e attivo quanto te, invece lo sono quanto un 95ne ?
P.S. Forse è una domanda... "leggermente" O.T. ?
Tutti sul Cervino, allora!Non è ciò che mangia, è l'aria pura che respira, aria di montagna.
Io respiro ariaccia e fumo pure!
Well, nothing really special, no special vitamins nor food supplements, but simply balanced food.Klaus, una domanda: cosa mangi?
You are welcome there, even only on its foot.Tutti sul Cervino, allora!
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?