French Manipuler une VIEW depuis un Module de code

Bluegyn

Member
Bonjour,

Nouveau sur B4A mais pas en programmation
Je suis en phase d'apprentissage des spécificités du Langage avec les repères que j'avais avec DELPHI

J'aimerais savoir s'il est possible de manipuler un EditText à partir d'un Module de Code

J'ai compris la lecture des Variables :

Soit un projet qui comporte l'ACTIVITY MAIN et un Module de Code MODULE

MAIN

B4X:
Private Valeur As Int
Valeur = EditText1.Text

Module.bas


B4X:
Sub Afficher
   MsgBoxAsync(MAIN.Valeur , "VALEUR")
End Sub
ça, ça marche...

J'aimerais un truc pour afficher directement

B4X:
Sub Afficher
   MsgBoxAsync((???).EditText1.Text , "VALEUR")
End Sub

La condition est de ne pas utiliser de paramètres comme

Main
B4X:
Sub Afficher (EditText1.Text)

Ca je sais faire.

Car je veux pouvoir manipuler le champ de saisie à partir du Module

- Contrôle de validité de la saisie
B4X:
If EditText1.Text = ... Then ...

- Avec retour de focus en cas d'erreur ...
B4X:
EditText1.requestFocus

Merci
***{:-
 

Bluegyn

Member
J'ai tourné le Pb dans tous les sens, la seule solution trouvée est de passer les champs en paramètres dans la fonction externe

Exemple :

Si je saisis la Longueur et la Largeur dans MAIN

Si la fonction Calculer_Surface est dans un module de code externe nommé ACTIONS

Je peux donner à Calculer_surface les plein pouvoirs sur les champs de saisie dans MAIN (et pas seulement sur la valeur saisie) si je les passe en paramètres en temps qu'objet de cette façon :

B4X:
Surface = ACTIONS.Calculer_Surface (Edit_Longueur, Edit_Largeur)

Avec Calculer_Surface qui reçoit dans ACTIONS les paramètres de cette façon

B4X:
Sub Calculer_Surface (Edit_longueur As EditText, Edit_Largeur As EditText)

Je peux donc dans ma fonction de calcul, lire les valeur saisies, mais surtout redonner le focus aux champs que je veux dans MAIN pour pointer la saisie erronée

LA QUESTION DEVIENT DONC :

1- Peut on dans un module de code externe déclarer le formulaire principal MAIN, afin de pouvoir accéder facilement à tous ses champs
2- Peut on dans une fonction Sub (calculer par exemple) passer l'Objet "MAIN" en globalité, pour éviter de passer l'un après l'autre tous ses champs, et si c'est possible comment le récupérer le détail des champs dans le Sub appelé

Si j'appelle la fonction

B4X:
Surface = ACTIONS.Calculer_surface(Me)

Comment j'écris dans ACTIONS mon Sub

B4X:
Sub Calculer_Surface ( MyForm As ?)

Le plus simple c'est de laisser la Sub dans MAIN, mais c'est bien trop simple pour celui qui aime les défis... :cool:
 
Top