Appel Procédure d'événement [Résolu]

Signaler
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
-
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
-
Salut à tous

Exposé du problème
Soit 3 Forms Frm1,Frm2 et FRm3 en VB 6.0
Sur chacune des formes 3 contrôles Tetbox : TextBox1,TextBox2,TextBox3

Dans un module nous pouvions écrire en VB 6.0

Public Sub Efface(Feuille as form)
       With Feuille
                .TextBox1.Text = ""   ' le premier caractère est un point 
                .TexttBox2.Text =""   ' idem
                .TextBox3.Text = ""   ' idem
        End With
End sub

Dans n'importe quelle feuille en faisant Efface(Me) on effaçait les 3 TextBox de la feuille en appelant la procédure publique contenue dans le module

Ma question : comment faire pareil sous VB net ? une procédure identique dans un module avec des noms de contrôles identiques agissant sur des feuilles différentes : cela évite de taper X fois la même procédure dans toutes les feuilles

Merci à tous pour vos réponses et A +
GRENIER Alain

8 réponses

Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Salut à tous : j'ai trouvé une solution

Au lieu de passer la feuille en paramètre il faut passer les contrôles en paramètres

Dans le module on écrit
Public Sub Efface(Text1 as Textbox,Text2  as Txtbox,Text3 as Textbox)
        Text1.Text = ""   
        Text2.Text ="" 
        Text3.Text = ""
End sub

Et l'appel se fait dans la feuille par Efface(Textbox1,Textbox2,Textbox3) avec les 3 noms des controles

Merci à tous et bonne soirée

GRENIER Alain
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
55
Bonsoir,
pourquoi ne pas faire une boucle sur tout les controles.
Si le type du controle est TextBox alors efface le contenu.

note: On préférera VBNullString à ""

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
salut,

(je teste en même temps)
les objets sont implicitement déclarés en FRIEND DIM WITHEVENTS, et non plus public pour l'objet, et private pour les events
c'est pourquoi le form.
ne donne pas accès au nom des composants
et en forçant (testé) çà donne une double déclaration = erreur

perso je tenterai comme çà mais sans certitude :

    Public Sub Efface(ByRef Feuille As Form)
        With Feuille
            For Each TB As System.Windows.Forms.Control In Feuille.Controls
                Select Case TB.Name
                    Case "TextBox1", "TextBox2", "TextBox3" : TB.Text = String.Empty
                End Select
            Next TB
        End With
    End Sub

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
*on peut enlever le With Feuille qui ne sert alors plus à rien :)

jrivet -> je crois que la question portait surtout sur la portée des objets avec l'accès intellisense
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Merci PCPT
Tu m'as donné une piste intéressante
Par contre je cherche à accéder dans la Sub Efface à un TextBox particulier parmi les 3 Textbox et non à tous les TextBox ( par de boucles For Each.... Next )
Je me penche là-dessus ce soir et je vous dirais ce qu'il y en est
Bonne journée à tous et Merci

GRENIER Alain
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
beh le case sur tb.name est là pour çà non?
et pour ajouter le filtre de type (comme le proposait jrivet), if tb.gettype.name="TextBox" then semble fonctionner mais il y a peut-être plus propre (???) - pas mon domaine ^^

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
55
Salut,
Euh.... Oui admettons... et si un jour tu as une feuille avec 4 Textbox (ou plus d'ailleurs), tu ne pourras pas utiliser cette fonction.
Dommage de faire du code "mort" d'avance tu ne trouve pas?

NOTE: ceci n'est qu un avis et n'as pas pour but de te décourager.

@+: Ju£i?n
Pensez: Réponse acceptée                    
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Tout à fait d'accord Jrivet

La procédure mise en exemple est toute simple alors que les vraies procédures de mon projet sont bien plus complexes  . Je suis en train de mettre  en VB net  le projet  "Accès Disques et Partitions" dont je suis l'auteur et plusieurs feuilles de ce projet contiennent des contrôles identiques avec des  Subs identiques.En mettant ces subs dans un module je peux agir sur ces contrôles depuis la feuille en cours en appellant les Subs dans le module sans à avoir à écrire à chaque fois la Sub dans le code de la feuille
en tout cas cela me satisfait pleinement et je te remercie de tes encouragements et de ton avis éclairé

PS : ce sont mes débuts en VB net : alors parfois je tatonne un peu

A+ et merci

GRENIER Alain