Appel Procédure d'événement

Résolu
Profil bloqué - 18 févr. 2008 à 23:22
 Profil bloqué - 20 févr. 2008 à 21:05
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

Profil bloqué
19 févr. 2008 à 21:33
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
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
18 févr. 2008 à 23:51
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
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
18 févr. 2008 à 23:59
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
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
19 févr. 2008 à 00:02
*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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Profil bloqué
19 févr. 2008 à 07:37
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
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
19 févr. 2008 à 08:53
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
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
20 févr. 2008 à 08:29
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                    
0
Profil bloqué
20 févr. 2008 à 21:05
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
0
Rejoignez-nous