OVH Cloud OVH Cloud

formulaire actif

5 réponses
Avatar
jc2nantes
Salut,

Je voudrais dans une fonction déclarée au niveau module retrouver le nom du
formulaire qui est actif et qui donc appel cette procédure...

Comment je peux faire ça ?

MERCI bien !

jc

5 réponses

Avatar
Jean-Marc
"jc2nantes" a écrit dans le message de
news:4386d5be$0$21228$
Salut,

Je voudrais dans une fonction déclarée au niveau module retrouver le nom


du
formulaire qui est actif et qui donc appel cette procédure...

Comment je peux faire ça ?

MERCI bien !



Hello,

En fait, sans déclaration explicite dans l'appel de la fonction,
c'est impossible, et ce par conception même du langage:
- 1 fonction ne sait pas qui l'appelle
- 1 fonction n'est pas forcément appelé par le formulaire actif.

Tu peux avoir form1 (actif, visible) et form2 (chargé mais invisible,
donc non "actif"). On peut avoir un timer dans form2 qui appelle une
fonction du module et donc la fonction sera appelée par un autre
formulaire que celui qui est actif.

Solution:
---------

Il existe toutefois une solution, certes un peu "lourde" à mettre
en oeuvre, mais sans plus:

Tu prévois dans toutes tes fonctions un paramètre additionnel, de
type String (éventuellement optionnel) et tu appelles les fonctions
en mentionnant explicitment le nom de la form (ou du module) appelant.

Rien de compliqué, pas très long à faire, et au pire, si ton programme
est immense, avec des centaines d'appels de fonction, tu peux même
écrire un petit programme qui fera pour toi les remplacements nécessaires.

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
jc2nantes
Merci, je vais tenté ça malgré une lourdeur toute relative!!! quand on ne
peut pas faire autrement... hein!


"Jean-Marc" a écrit dans le message de news:
4386dd64$0$5721$
"jc2nantes" a écrit dans le message de
news:4386d5be$0$21228$
Salut,

Je voudrais dans une fonction déclarée au niveau module retrouver le nom


du
formulaire qui est actif et qui donc appel cette procédure...

Comment je peux faire ça ?

MERCI bien !



Hello,

En fait, sans déclaration explicite dans l'appel de la fonction,
c'est impossible, et ce par conception même du langage:
- 1 fonction ne sait pas qui l'appelle
- 1 fonction n'est pas forcément appelé par le formulaire actif.

Tu peux avoir form1 (actif, visible) et form2 (chargé mais invisible,
donc non "actif"). On peut avoir un timer dans form2 qui appelle une
fonction du module et donc la fonction sera appelée par un autre
formulaire que celui qui est actif.

Solution:
---------

Il existe toutefois une solution, certes un peu "lourde" à mettre
en oeuvre, mais sans plus:

Tu prévois dans toutes tes fonctions un paramètre additionnel, de
type String (éventuellement optionnel) et tu appelles les fonctions
en mentionnant explicitment le nom de la form (ou du module) appelant.

Rien de compliqué, pas très long à faire, et au pire, si ton programme
est immense, avec des centaines d'appels de fonction, tu peux même
écrire un petit programme qui fera pour toi les remplacements nécessaires.

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;



Avatar
Christian Hugoud
Tu peux peut-être utiliser Screen.ActiveForm (attention : pour les mdi, il y
a autre chose)

Christian


"Jean-Marc" a écrit dans le message de news:
4386dd64$0$5721$
"jc2nantes" a écrit dans le message de
news:4386d5be$0$21228$
Salut,

Je voudrais dans une fonction déclarée au niveau module retrouver le nom


du
formulaire qui est actif et qui donc appel cette procédure...

Comment je peux faire ça ?

MERCI bien !



Hello,

En fait, sans déclaration explicite dans l'appel de la fonction,
c'est impossible, et ce par conception même du langage:
- 1 fonction ne sait pas qui l'appelle
- 1 fonction n'est pas forcément appelé par le formulaire actif.

Tu peux avoir form1 (actif, visible) et form2 (chargé mais invisible,
donc non "actif"). On peut avoir un timer dans form2 qui appelle une
fonction du module et donc la fonction sera appelée par un autre
formulaire que celui qui est actif.

Solution:
---------

Il existe toutefois une solution, certes un peu "lourde" à mettre
en oeuvre, mais sans plus:

Tu prévois dans toutes tes fonctions un paramètre additionnel, de
type String (éventuellement optionnel) et tu appelles les fonctions
en mentionnant explicitment le nom de la form (ou du module) appelant.

Rien de compliqué, pas très long à faire, et au pire, si ton programme
est immense, avec des centaines d'appels de fonction, tu peux même
écrire un petit programme qui fera pour toi les remplacements nécessaires.

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;



Avatar
Jacques93
Bonjour Jean-Marc,
Jean-Marc a écrit :
"jc2nantes" a écrit dans le message de
news:4386d5be$0$21228$

Salut,

Je voudrais dans une fonction déclarée au niveau module retrouver le nom



du

formulaire qui est actif et qui donc appel cette procédure...

Comment je peux faire ça ?

MERCI bien !




Hello,

En fait, sans déclaration explicite dans l'appel de la fonction,
c'est impossible, et ce par conception même du langage:
- 1 fonction ne sait pas qui l'appelle
- 1 fonction n'est pas forcément appelé par le formulaire actif.

Tu peux avoir form1 (actif, visible) et form2 (chargé mais invisible,
donc non "actif"). On peut avoir un timer dans form2 qui appelle une
fonction du module et donc la fonction sera appelée par un autre
formulaire que celui qui est actif.

Solution:
---------

Il existe toutefois une solution, certes un peu "lourde" à mettre
en oeuvre, mais sans plus:

Tu prévois dans toutes tes fonctions un paramètre additionnel, de
type String (éventuellement optionnel) et tu appelles les fonctions
en mentionnant explicitment le nom de la form (ou du module) appelant.

Rien de compliqué, pas très long à faire, et au pire, si ton programme
est immense, avec des centaines d'appels de fonction, tu peux même
écrire un petit programme qui fera pour toi les remplacements nécessaires.




On peut pousser ton raisonnement plus loin, en passant une référence de
la feuille appelante. Dans le module :

Public Sub MaFonction(frm As Form, ...) As ...
MsgBox frm.Name
...
End Function

ce qui permet d'accéder, si nécessaire, aux contrôles contenus sur la
feuille. Et dans les feuilles d'appeler la fonction avec simplement :

MaFonction Me, ...

--
Cordialement,

Jacques.
Avatar
Driss HANIB
pour ma part c'est ce que je fais : je met une constante correspondant à la
feuille qui a appelé.
et je mets à jour enfonction de cette constante.

Driss

"Jacques93" a écrit dans le message de
news:
Bonjour Jean-Marc,
Jean-Marc a écrit :
> "jc2nantes" a écrit dans le message de
> news:4386d5be$0$21228$
>
>>Salut,
>>
>>Je voudrais dans une fonction déclarée au niveau module retrouver le nom
>
> du
>
>>formulaire qui est actif et qui donc appel cette procédure...
>>
>>Comment je peux faire ça ?
>>
>>MERCI bien !
>
>
> Hello,
>
> En fait, sans déclaration explicite dans l'appel de la fonction,
> c'est impossible, et ce par conception même du langage:
> - 1 fonction ne sait pas qui l'appelle
> - 1 fonction n'est pas forcément appelé par le formulaire actif.
>
> Tu peux avoir form1 (actif, visible) et form2 (chargé mais invisible,
> donc non "actif"). On peut avoir un timer dans form2 qui appelle une
> fonction du module et donc la fonction sera appelée par un autre
> formulaire que celui qui est actif.
>
> Solution:
> ---------
>
> Il existe toutefois une solution, certes un peu "lourde" à mettre
> en oeuvre, mais sans plus:
>
> Tu prévois dans toutes tes fonctions un paramètre additionnel, de
> type String (éventuellement optionnel) et tu appelles les fonctions
> en mentionnant explicitment le nom de la form (ou du module) appelant.
>
> Rien de compliqué, pas très long à faire, et au pire, si ton programme
> est immense, avec des centaines d'appels de fonction, tu peux même
> écrire un petit programme qui fera pour toi les remplacements


nécessaires.
>

On peut pousser ton raisonnement plus loin, en passant une référence de
la feuille appelante. Dans le module :

Public Sub MaFonction(frm As Form, ...) As ...
MsgBox frm.Name
...
End Function

ce qui permet d'accéder, si nécessaire, aux contrôles contenus sur la
feuille. Et dans les feuilles d'appeler la fonction avec simplement :

MaFonction Me, ...

--
Cordialement,

Jacques.