[..] GUICtrlSetColor() ne fonctionne pas dans une fonction

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Geek0o
Niveau 2
Niveau 2
Messages : 20
Enregistré le : mar. 26 oct. 2010 21:28
Status : Hors ligne

[..] GUICtrlSetColor() ne fonctionne pas dans une fonction

#1

Message par Geek0o »

Bonjour,

Ce code permet de trier les donnée d'une page WEB puis de les organisée dans une liste view précédément crée:
► Afficher le texte
Le problème est que dans ma listview les couleurs ne s'affiche pas.
Il suffit que je sorte mon code de la fonction:

► Afficher le texte
Et là les couleurs fonctionnent.
Pourquoi, y at-il une solution ?

Merci, @+
Modifié en dernier par Geek0o le mar. 19 juil. 2011 18:45, modifié 4 fois.
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] GUICtrlSetColor() ne fonctionne pas dans une foncti

#2

Message par zeshrek »

Merci de lire les regles de présentation des messages
Ensuite dans le message, si vous devez mettre du code, merci d'utiliser les balises prévues à cet effet.
Et si votre code dépasse 5-10 lignes, utilisez la balise Spoiler afin de raccourcir la taille de votre message ce qui facilita la lecture du forum.
Cliquez le bouton Spoiler puis le bouton Code, et placez votre code au centre des balises code
Merci de corriger, faute de quoi le post finira dans la poubelle
Si vis pacem para bellum
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] GUICtrlSetColor() ne fonctionne pas dans une foncti

#3

Message par ZDS »

Bonjour,

Déjà un souci sur ta première ligne avec GUICtrlSetColor, GUICtrlSetColor(-1, 0x004000)
=> le -1 se réfère au dernier contrôle créé, et pour être sûr de ne pas avoir trop de problème il est recommandé que la fonction y faisant appel soit dans les lignes juste avant.
► Afficher le texteExemple correct
► Afficher le texteExemple incorrect
Donc dans ton exemple, à quoi s'applique ton 1er GUICtrlSetColor(-1, 0x004000) ? Apparemment à rien, puisque rien n'apparait dans la fonction.

Ensuite, Ne sachant pas ce qui se passe avant ton appel à la fonction, prend toujours en connaissance qu'une fonction travaille avec des variables locales (déclarées sur place), et des globales; les locales avant l'appel ne sont pas transmises, sauf si tu les passes en paramètre de ta fonction.

Bref, sans le reste du code pas facile de te dire exactement d'où vient ton problème, mais je parierai sur cette distinction locales/globales qui n'est pas gérée pareil quand tu es dans une fonction (quand tu n'en as pas, toutes tes variables sont logées à la même enseigne, c'est pour ça que ça marche).

Donc : Envoie ton code complet (AVEC DES BALISES SPOILER !) et surtout, mets à jour ton premier message (toujours avec les balises spoilers).

A bientôt !

PS: Toujours dans la même optique, si tu n'as pas déclaré $ListMalwares en Global et/ou si tu ne la passes pas en paramètre, comment veux-tu que ton script sache sa valeur une fois dans la fonction? C'est pour ça que tu ne peux pas lui donner de couleur, c'est parce que ton item n'est pas recréé.
Une fonction est un peu comme une douane, tu ne peux récupérer tes variables et leurs valeurs que si tu les transmets explicitement (en paramètre), ou si tu les déclares (en Global). Le reste t'attendra quand tu en sortiras.
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Geek0o
Niveau 2
Niveau 2
Messages : 20
Enregistré le : mar. 26 oct. 2010 21:28
Status : Hors ligne

Re: [..] GUICtrlSetColor() ne fonctionne pas dans une foncti

#4

Message par Geek0o »

Merci pour vos réponses. Message rectifié, désolé.

Voici le code:
► Afficher le texte
Le texte est bien transmit donc ce n'est pas un problème de variable (du moins je ne crois pas) de plus $ListMalwares est bien déclaré en Global et même passée en paramêtre.

@+
Répondre