Détection évènement par une classe

[Résolu]
Signaler
Messages postés
7
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
29 août 2008
-
Messages postés
7
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
29 août 2008
-
Bonjour,
J'essaye de créer un évènement dans une form et le gérer dans un module de classe.

J'ai créer une form ("Form1") avec un bouton ("Command1").
Option Explicit
Public Event Click()

Private Sub Command1_Click()
    RaiseEvent Click
End Sub

Private Sub Form_Load()
    Command1.Caption = "test"
End Sub

un module de classe "Classe"
Option Explicit
Private WithEvents Feuil As Form1

Private Sub Class_Initialize()
    Set Feuil = New Form1
    Feuil.Show
End Sub

Private Sub Feuil_Click()
    Feuil.Label1.Caption = "évènement"
End Sub

et un module démarrant mon application par "sub main"
Public Sub Main()
    Set CClasse = New Classe
    'gesterreur:
End Sub

Cependant quand je clique sur mon bouton, je passe bien sur le "raisevent Click" mais je ne passe pas par ma fonction "Private Sub Feuil_Click()" du module de classe.

Je voudrais juste savoir pourquoi ? et comment faire pour que je passe dans mon module de classe.

si vous vous posez la question pourquoi je veux faire comme ça, c'est que je gère une base de donnée dans mon module de classe et je voudrais sur le clik d'un bouton ouvrir ou modifier ma  base de donnée.

Merci d'avance.

11 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Et bien même par un Exe standard, cela fonctionnera, il faut "simplement" DÉCLARER ta variable de type Classe

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Je n'ai absolument aucun problème avec ton code chez moi.

en revanche la SEULE CHOSE que j'ai due faire pour que cela fonctionne c'est de préciser à VB6 que le démarrage du projet se faisait par un SUB MAIN. mais je suppose que tu l'as fait aussi non?

si ce n'est pas le cas fait le cela devrait corriger ton problème.

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
7
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
29 août 2008

comme tu l'as dit, oui j'ai déjà précisé le démarrage avec le sub main. Mais le caption de mon bouton ne change pas en "évènement" sur le clik.

Si la fonction "Private Sub Feuil_Click()" se lance chez toi, c'est que ça doit plutôt être dans les options de VB6 alors ?
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
As tu essayer de le mettre dans un projet vierge pour voir.

Tu mets juste le code que tu as proposé dans un nouveau projet (comme je l'ai fait)
Chez moi ca a fonctionné.

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
7
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
29 août 2008

oui j'ai essayé après ta première réponse de refaire un projet comme tu avais du le faire. mais toujours pas de résultats.
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Désolé... je ne vois pas.
Essaie de m'envoyer le nouveau projet simplifié pour voir si il marche chez moi ...

epsylon9 @ gmail . Com

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
7
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
29 août 2008

ton adresse mail "epsylon9@gmail.Com" ne fonctionne pas. tu trouveras le projet sur http://dl.free.fr/jL1cu36xc
Merci
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
RE,
Bon et bien rajoute ceci dans le module pour voir si cela corrige

Option Explicit
Dim CClasse As Classe

Public Sub Main()
   Set CClasse = New Classe
   'gesterreur:
End Sub<hr />, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
7
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
29 août 2008

C'était ça.
Mais en fait, mon projet original est un EXE ActiveX donc je lance pas ma classe par un module mais par un EXE standard. Donc est-ce que tu aurais une idée pour remplacer le "dim cclasse as classe" ou autre chose pour que ça fonctionne?
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut,

Je confirme ^^, cela fonctionne très bien ^^....

A+
Exploreur

 Linux a un noyau, Windows un pépin
Messages postés
7
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
29 août 2008

C'est bon.
J'avais déjà déclarer ma classe comme il fallait, mais pour tester mon EXE ActiveX, je le lançais en run (Ctrl+F5) puis je lançais le fichier .exe de mon EXE standard. Mais mon EXE standard plantait après l'ouverture de l'activeX. Par conséquent les évenements ne fonctionnaient pas.

pour tester un activeX il faut le lancer en run PUIS OUVRIR l'EXE standard, puis lancer le standard en run (Ctrl+F5).

J'espère avoir été clair.
Merci beaucoup jrivet