Fonction particulière

Signaler
Messages postés
33
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
9 décembre 2013
-
Messages postés
33
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
9 décembre 2013
-
Bonjour,

Afin de rendre un bouton Enable à False, j'ai différentes fonctions à appeler, il suffit que l'une d'elle soit fausse pour que celui-ci passe à false.

Exemple d'une des fonction de contrôle:
Je fais une fonction "test" qui doit me retourner un booléen, mais j'aimerais qu'un message s'affiche à côté du bouton (j'y ai placé un label commun pour les erreurs). Comment faire entre ma fonction "principale" et les différentes fonctions? je ne pense pas que ce soit à chaque fonction de contrôle de mettre le message dans le label. j'aurais voulu le retourner aussi à la fonction principale en plus du booléen.

Comment faites vous habituellement?

Merci.

7 réponses

Messages postés
224
Date d'inscription
vendredi 26 novembre 2010
Statut
Membre
Dernière intervention
11 juin 2013
4
Bonjour,

au lieu de retourner un booleen tu pourrais retourner une string. Si elle est vide tout va bien, sinon elle contient le message d'erreur à afficher.
Sinon je ne connais pas d'autre solution .
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Bonjour,


Voilà comment je ferai..habituellement:

If Principale=False then
Button.Enabled=False
Label.Caption="..."
End If

Function Principale() As Boolean
Dim I As Integer

If Secondaire_1=False Then I=I+1
If Secondaire_2=False Then I=I+1
If Secondaire_3=False Then I=I+1
If Secondaire_4=False Then I=I+1

If I=0 Then Principale=True

End Function






[] Ce qui va sans dire. va mieux en le disant.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Si le message dépend de quelle fonction secondaire est à false,
tu peux faire ceci:

Boutton.Enabled= Principale

Function Principale() As Boolean

Dim Msg As String

If Secondaire_1=False Then Msg="Msg1"
If Secondaire_2=False Then Msg="Msg2"
If Secondaire_3=False Then Msg="Msg3"
If Secondaire_4=False Then Msg="Msg4"

Label.Caption=Msg
If Msg="" Then Principale=True

End Function
Messages postés
33
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
9 décembre 2013

Ok mais chaque fonction a ses messages pour le label. Puis en cas de message, bien sûr je ne passe pas au contrôle suivant.

J'ai testé ceci, mais sous VS 2005 ça ne fonctionne pas contrairement au 2010 :

    Private Function test() As String()

        return {"test1","test2"}

    End Function
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
"Puis en cas de message, bien sûr je ne passe pas au contrôle suivant. "


Je ne connais ni VS 2005 ni VS 2010,
et donc je ne sais pas si on peut faire ceci:


Function Principale() As Boolean

Dim Msg As String

If Secondaire_1=False Then
Msg="Msg1"
GoTo EEXIT
End If

If Secondaire_2=False Then
Msg="Msg2"
GoTo EEXIT
End If

If Secondaire_3=False Then
Msg="Msg3"
GoTo EEXIT
End If

If Secondaire_4=False Then Msg="Msg4"



EEXIT:

Label.Caption=Msg
If Msg="" Then Principale=True

End Function








[] Ce qui va sans dire. va mieux en le disant.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Une autre variante:

Function Principale() As String

If Secondaire_1=False Then
Principale="Msg1"
Exit Function
End If

If Secondaire_2=False Then
Principale="Msg2"
Exit Function
End If

If Secondaire_3=False Then
Principale="Msg3"
Exit Function
End If

If Secondaire_4=False Then Principale="Msg4"

End Function

...
Label.Caption=Principale
If Label.Caption<>"" Then Boutton.Enabled=False



[] Ce qui va sans dire. va mieux en le disant.
Messages postés
33
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
9 décembre 2013

Voici ce que j'ai du faire :

Une classe :

    Public Class cRetourFonction
        Private Retour As Boolean = False
        Public ErrMessage As List(Of String) = Nothing
        Public OkMessage As List(Of String) = Nothing

#Region "Propriétés"

        ''' <summary>
        ''' Défini ou donne l'état
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property ysn() As Boolean
            Get
                Return Me.Retour
            End Get
            Set(ByVal value As Boolean)
                Me.Retour = value
            End Set
        End Property

#End Region
#Region "Publique"

        Public Sub New()
        End Sub

        Public Sub New(ByVal retour)
            Me.Retour = retour
        End Sub

#End Region

    End Class


Ma fonction principale avec pour le moment 1 fonction de contrôle

Private Sub MajBtnAjoutPaiement()
        BtnAddCertif.Enabled = True

        Dim ret_CTRL_PresencePermisOs As cFctCommunes.cRetourFonction = CTRL_PresencePermisOS()
        If Not ret_CTRL_PresencePermisOs.ysn Then
            BtnAddCertif.Enabled = ret_CTRL_PresencePermisOs.ysn
            lErreur.Text = Join(ret_CTRL_PresencePermisOs.ErrMessage.ToArray, "
")
        End If

    End Sub


Contrôle (volontairement limité)

    Private Function CTRL_PresencePermisOS() As cFctCommunes.cRetourFonction

        With WUCGiveMeData
            .SqlQueryCnxListRecord = "SELECT ...."

            .SqlQueryCnxListRecord = .SqlQueryCnxListRecord.Replace("@@idMarche@@", MonID)
            .GetListRecord()

            Dim retour As New cFctCommunes.cRetourFonction

            If .ListRecords.Count = 0 Then
                retour.ysn = False
                retour.ErrMessage.Add("Veuillez affecter les bâtiments de l'OS aux ilôts et permis.")
            Else
                retour.ysn = True
            End If

            Return retour
        End With

    End Function