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 :

ImageList en paramètre d'une fonction


Sujet :

VB 6 et antérieur

  1. #1
    Yop
    Yop est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 15
    Points : 8
    Points
    8
    Par défaut ImageList en paramètre d'une fonction
    Bonjour,

    J'essaye de passer une ImageList en paramètre d'une fonction mais cela me retourne l'erreur : runtime error 91 Object variable or with block variable not set.

    Voilà ce que je fais (je simplifie grandement le code) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Affichage Photo1.ListImages
    ....
    ....
     
    Sub Affichage (Image As ListImages)
     
    Set Grid.CellPicture = Image.Item("Maison").Picture
     
    End Function
    Le code bloque sur "Image.Item", comme si ça n'était pas défini.

    Pourtant si je fais directement pour tester un Set Grid.CellPicture = Photo1.ListImages("Maison").Picture, ça fonctionne bien.

    Auriez-vous une idée ? Merci à la moindre petite aide car cela fait déjà plusieurs heures que je me creuse la tête sur ce problème

    Bonne journée à vous.

    Yop

  2. #2
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Bonjour,
    L'erreur semble être levée parce que l'item Maison n'existe pas.
    Il faut gérer impérativement toutes erreurs et les objects variables intermédiaires.

    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub Affichage (Image As ListImages)
     
      on error goto err_Affichage
     
    If Typename(Image.Item("Maison"))<>"Nothing" then
         Set Grid.CellPicture = Image.Item("Maison").Picture
    endif
     
    'ou
    dim oImg as object
    10 set oImg=Image.Item("Maison")
     
    20 if typename(oImg)<>"Nothing" then ...
    'etc.
    exit function
    err_Affichage:
       msgbox erl & vbcrlf & errno & vbtab & err.description 
        resume next
    End Function
    Avec ce genre d'erreurs, il est toujours préférable de scinder les lignes d'instructions
    d'autant que cela permet d'exécuter le code ligne par ligne et de vérifier chaque affectation au fur et à mesure.

    Ceci dit, si l'affectation directe fonctionne ! ...

  3. #3
    Yop
    Yop est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Merci DarkVader d'avoir pris le temps de me répondre.

    Par contre ça ne fonctionne toujours pas même avec ta solution.

    En fait si je simplifie encore plus le code comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Affichage Photo1.ListImages
    ....
    ....
     
    Sub Affichage (Image As ListImages)
     
    MsgBox Image.Count
     
    End Function
    J'ai toujours l'erreur 91 sur 'Image.Count'.

    Je ne comprends vraiment pas pourquoi....

    Tu aurais une autre idée ou quelqu'un d'autres ?

    Merci d'avance.

    Yop

  4. #4
    Membre actif
    Inscrit en
    Janvier 2011
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 112
    Points : 209
    Points
    209
    Par défaut
    ___Ia ora na.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub Affichage (Image As ListImages)
    ___Image est un mot résérvé de VB (propriété des feuilles et de certains contrôles) ; on ne peut pas l'utiliser comme nom de variable.
    ___Quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Affichage (MesImages As ListImages)
     
    MsgBox MesImages.Count
     
    End Function
    devrait fonctionner.
    ___Quant à Item, il semble qu'il ne puisse s'employer qu'avec un nombre (l'indice de l'image dans la collection) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set imgX = ImageList1.ListImages.Item(3)
    qui équivaut à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set imgX = ImageList1.ListImages(3)
    ' ou encore à
    Set imgX = ImageList1.ListImages("Numéro Trois")
    ___Bonne poursuite de vos projets.

  5. #5
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 179
    Points
    17 179
    Par défaut
    Salut

    Compris, pas compris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Form_Load()
    Compte ImageList1
    Affichage ImageList1
    End Sub
    Sub Compte(Image As ImageList)
    MsgBox Image.ListImages.Count
    End Sub
    Sub Affichage(Image As ImageList)
    Me.Picture = Image.ListImages.Item(1).Picture
    End Sub
    ImageList1 -->Class ImageList -->Membre de MSComctlLib-->MSCOMCTL.ocx-->Contrôles communs Microsoft Windows 6.0
    Mais, j'ai peut être raté quelque chose
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/12/2005, 12h33
  2. Evaluations des paramètres d'une fonction
    Par WebPac dans le forum Langage
    Réponses: 15
    Dernier message: 06/10/2005, 09h46
  3. paramètres pour une fonction
    Par bul dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/05/2005, 07h49
  4. Réponses: 9
    Dernier message: 13/05/2005, 03h13
  5. Passer en paramètre d'une fonction (...)
    Par Captain_JS dans le forum C++
    Réponses: 5
    Dernier message: 03/11/2004, 07h18

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