Détection évènement par une classe

Résolu
cs_VTO Messages postés 7 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 29 août 2008 - 29 août 2008 à 08:42
cs_VTO Messages postés 7 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 29 août 2008 - 29 août 2008 à 11:35
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

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
29 août 2008 à 10:56
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
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
29 août 2008 à 09:13
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
0
cs_VTO Messages postés 7 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 29 août 2008
29 août 2008 à 09:25
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 ?
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
29 août 2008 à 09:39
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
0

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

Posez votre question
cs_VTO Messages postés 7 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 29 août 2008
29 août 2008 à 09:42
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.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
29 août 2008 à 09:52
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
0
cs_VTO Messages postés 7 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 29 août 2008
29 août 2008 à 10:07
ton adresse mail "epsylon9@gmail.Com" ne fonctionne pas. tu trouveras le projet sur http://dl.free.fr/jL1cu36xc
Merci
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
29 août 2008 à 10:13
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
0
cs_VTO Messages postés 7 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 29 août 2008
29 août 2008 à 10:40
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?
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
29 août 2008 à 10:43
Salut,

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

A+
Exploreur

 Linux a un noyau, Windows un pépin
0
cs_VTO Messages postés 7 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 29 août 2008
29 août 2008 à 11:35
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
0
Rejoignez-nous