[VB6] A l'aide...controle et classe ...

cs_chrisK Messages postés 5 Date d'inscription mercredi 26 mars 2003 Statut Membre Dernière intervention 19 octobre 2004 - 19 oct. 2004 à 12:22
cs_chrisK Messages postés 5 Date d'inscription mercredi 26 mars 2003 Statut Membre Dernière intervention 19 octobre 2004 - 19 oct. 2004 à 14:32
Bonjour tout le monde,

Je suis sur un projet VB6 mais je débute et je demande de l'aide...

Je vous explique la situation...

J'ai une form ( pour l'instant ) avec des controles CommandButton ( MSFORM2.0).
Je souhaite faire une classe qui permette d'initialiser les boutons au chargement de la form
et ensuite de les définir d'une manière bien précise. Je m'explique

Dans ma form :
- n CommandButtons
Dans le form Load
je veux faire CommandButton.Init() ( afin de position des pptés comme Font.bold, BackColor...qui sont constantes )
Ensuite suivant mes boutons je veux les définir en leur attribuant un picto ( issu d'une imageList ) et un texte prédéfini.

Exemple : Pour un bouton "valider" je lui attribue le picto ( v vert ) + texte " Valder".Je pensais alors utiliser la syntaxe suivante :
monBouton.SetValider()
où SetValider() est une méthode qui colle un picto et un texte.

Seulement voilà je ne connais rien aux classes ...
Il me semble que je devrai définir des fonctions Init(), SetValider() dans ma classe ...
mais comment utiliser mom ImageList ( qui est sur la Form )?
Et comment faire dans la form pour définir mes contrôles comme des objet de ma classe?
(
Set ComandButton = New cBouton
? )

Merci d'avance de votre aide....

kikilaclef

6 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
19 oct. 2004 à 12:33
Salut,
Et pourquoi tu passerais pas par des Sub internes a ton forms
Ces sub Pourraient Etre:
Private sub  InitBoutons()
la tu fais ce que tu veux avec tes boutons
End Sub


Si tu veux vraiment passer par des classes il faut que tu passe en reference a ta classe les boutons
Par exemple une classe qui s appellerait ClsBoutons

Private BoutonValider as CommandButton
Public Sub SetValider(p_CmdButon as CommandButton)
Set BoutonValider = p_CmdButon ' de cette maniere dans cette classe le bouton valider sera le bouton que tu aura placer en parametre en appelant le SUb depuis ton form
' la tu fais les actions que tu veux sur le bouton 
end Sub

ŽCODE DU FORM
Private CBoutons as new ClsBoutons
Private sub Form Load
call cboutons.SetValider(Command1)
End sub


Meme chose pour la fonction Init

Mais en vb6 tu peux pas ajouter (pour autant que je sache...) des fonction Init() et SetValider() a un objet CommandBouton.
Je sais pas si j ai ete tres clair et si je t ai un peu aider mais bon...
@+
Julien
-----------------------------------------------------------
:big) Essai ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
0
cs_chrisK Messages postés 5 Date d'inscription mercredi 26 mars 2003 Statut Membre Dernière intervention 19 octobre 2004
19 oct. 2004 à 12:38
Merci pour ces indications...
En fait ça rejoint ce que je suis en train de faire, seulement voilà Je me demandait si il n'y avait pas moyen de rattacher mes controles à la classe directement avec un truc du style :

Set Me.cmdbClose = New cBouton


Pour ensuite jouer avec
Me.cmdbClose.Init()
Me.cmdbClose.setClose()


@+
ChrisK
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
19 oct. 2004 à 12:46
salut,

Juste un demande de precision c coi comme type cBouton et cmdbClose?

SI tu veux faire tes bouton personaliser alors peu etre faudrait il t aurienter plutot vers les controls activeX.
@+
Julien
-----------------------------------------------------------
:big) Essai ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
0
cs_chrisK Messages postés 5 Date d'inscription mercredi 26 mars 2003 Statut Membre Dernière intervention 19 octobre 2004
19 oct. 2004 à 13:02
cBouton est ma classe
cmdbClose est un MSforms.CommandButton

Pour l'instant je viens de faire 2 fonctions ( InitBouton et SetBoutonImage)

Public Sub InitBouton(ByRef myButton As MSForms.CommandButton)

    With myButton
        .Font.Bold = True
        .BackColor = RGB(160, 175, 208)
        .PicturePosition = fmPicturePositionLeftCenter
        .Caption = ""
    End With
End Sub
Public Sub SetBoutonImage(ByRef myButton As MSForms.CommandButton, ByVal idx As Integer)

    With myButton
        
        Select Case idx
            Case "0"
                .Caption = " Valider"
            Case "1"
                .Caption = " Fermer"
            Case "2"
                .Caption = " Annuler"
            Case "3"
                .Caption = " Supprimer"
            Case "4"
                .Caption = " Rechercher"
            Case "5"
                .Caption = " Vérifier les infractions"
            'Default
             '   .Caption = ""
        End Select
        
        .Picture = Form1.ImageList1.ListImages(idx).Picture
        .AutoSize = True
        
    End With
    
End Sub


Et jécris ça dans ma form... :
Dim monBouton As New cBouton

'Initialisations des boutons Valider, fermer, rechercher
monBouton.InitBouton( Me.cmdbValid)
monBouton.InitBouton( Me.cmdbClose)
monBouton.InitBouton( Me.cmdbCher)

' Définition des boutons Valider, Fermer, Rechercher
monBouton.SetBoutonImage ( Me.cmdbValid, 0)
monBouton.SetBoutonImage ( Me.cmdbClose, 1)
monBouton.SetBoutonImage ( Me.cmdbCher, 4)


Si qqn peux me donner son avis thk you

Je trouve ça pas trop top vu que les boutons sont situés sur des tab ( tout est codé dans la même form... )

En tout qu'à merci de m'aider...
0

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

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
19 oct. 2004 à 13:12
Re,

Ca a l air pas trop mal comme code, si ca marche.

Si tu veux tu peux ajouter une Enum dans ta classe comme ca ca t evite de te souvenir des chiffres qui reprente "Valider", "FErmer" etc...

[Code]
Au debut de ta classe
Public Enum TypeBouton
BoutonValider = 0
BoutonFermer = 1
BoutonAnnuler = 2
BoutonSupprimer = 3
BoutonRechercher = 4
BoutonVerifier = 5
End Enum

Public Sub SetBoutonImage(ByRef myButton As MSForms.CommandButton, ByVal idx As TypeBouton)

With myButton

Select Case idx
Case BoutonValider: .Caption = " Valider"
Case BoutonFermer: .Caption = " Fermer"
Case BoutonAnnuler: .Caption = " Annuler"
Case BoutonSupprimer: .Caption = " Supprimer"
Case BoutonRechercher: .Caption = " Rechercher"
Case BoutonVerifier: .Caption = " Vérifier les infractions"
Case Else: .Caption = ""
End Select

.Picture = Form1.ImageList1.ListImages(idx).Picture
.AutoSize = True

End With

End Sub

[Code]

De cette maniere quand tu appelera cette fonction depuis le form il te sortira directement la liste de ce que tu peux mettre
@+
Julien
-----------------------------------------------------------
:big) Essai ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
0
cs_chrisK Messages postés 5 Date d'inscription mercredi 26 mars 2003 Statut Membre Dernière intervention 19 octobre 2004
19 oct. 2004 à 14:32
Meric pour tout

Et bonne continuation...

ChrisK
0
Rejoignez-nous