IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Tester l'existence d'un control dans une form


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Tester l'existence d'un control dans une form
    Bonjour à tous,

    je voudrais savoir comment on peut tester l'existence d'un control dans une form.

    Pour le moment j'ai mis le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    dim oControl as control
    for each oControl in me.controls
      if oControl.name="BTN_QUITTER" then
        stop
      endif
    next oControl
    Ici je m'arrete sur stop si je trouve le control nommé "BTN_QUITTER".

    Je voulais donc savoir si il existe un moyen moins lourd de tester ceci.

    Merci d'avance.

  2. #2
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Re,

    Alors, il n'existe pas d'autre moyen que de faire une boucle sur tous les contrôles de ta form.

    Je rajouterais quelques détails (en rouge) d'un point de vue pratique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    dim oControl as control
    dim ctrlExist as boolean
    
      ctrlExist=false
    
      for each oControl in me.controls
        if oControl.name="BTN_QUITTER" then
          ctrlExist=true
          exit for
        endif
      next oControl
    Comme cela tu sauras si le contrôle existe avec la variable ctrlExist

    +

    Théo

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Ok, je te remercie, le stop était juste un pour l'exemple , pour pas mettre les lignes de code ^^.

    A bientot

  4. #4
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Avec CallByName tu peux trouver ton bonheur
    Dans un évenement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Form_Load()
     If ControleExists(Me, "nomControle") Then
        MsgBox "Ok ! ça existe"
       Else
        MsgBox "Non ! ça n'existe pas"
     End If
    End Sub
    Dans un mondule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Public Function ControleExists(ByRef o As Object, ByVal nomPropriete As String) As Boolean
        On Error Resume Next
        CallByName o, nomPropriete, VbGet
        ControleExists = (Err.Number = 0)
    End Function

  5. #5
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Il n'et pas utile de passer par une variable de type string pour celà, puisque l'on doit se contenter de vérifier qu'un contrôle (dont un suppose donc le nom) existe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Command1_Click()
      MsgBox teste(Text2)
    End Sub
     
    Function teste(toto)
      On Error Resume Next
      teste = "n'existe pas"
      toto.Width = 200 ' ou toute autre vérif (par exemple sur la propriété .Name)
      If Err = 0 Then teste = "existe"
    End Function

    EDIT :

    Voilà un autre exemple, sans gestion d'erreur, en jouant avec la propriété Name (toujours présente, elle, y compris pour les contrôles spéciaux tels que Line,...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Command1_Click()
      MsgBox teste(Text1)
    End Sub
     
    Function teste(toto)
      teste = ""
      On Error Resume Next
      teste = toto.Name
      If teste <> toto.Name Then
        teste = "n'existe pas"
      Else
        teste = "existe"
      End If
    End Function

  6. #6
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut
    Il y a aussi ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Control Is Nothing Then '.
    Mais il y a une erreur qui se produit si l'objet n'existe pas. Il faut donc supprimer "Option Explicit" et ajouter "On Error Resume Next", et ensuite gérer...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tester l'existence d'un champ dans une table
    Par Raphael_74 dans le forum WebDev
    Réponses: 1
    Dernier message: 29/02/2008, 15h58
  2. Tester l'existence d'un paramètre dans une fonction
    Par olivier1978 dans le forum Programmation (La)TeX avancée
    Réponses: 0
    Dernier message: 16/11/2007, 23h10
  3. Tester l'existence d'un index dans une base de données
    Par QuickSave dans le forum Bases de données
    Réponses: 4
    Dernier message: 31/01/2007, 13h41
  4. Tester l'existence d'un champ dans une requête
    Par Reidid dans le forum Access
    Réponses: 3
    Dernier message: 23/01/2006, 22h02
  5. Tester l'existence d'un champ dans une table
    Par Oluha dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 05/09/2005, 11h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo