Page 1 sur 1

[R] Comportement controle "Icon" sans image

Posté : mar. 20 oct. 2015 09:58
par mimione
Bonjour

J'ai pris l'habitude d'utiliser des controls "Icon" plutôt que des "vrais" boutons lorsque je veux y incorporer une image. La raison est illustrée par mon exemple ci-joint. On observe que le rendu est plus "propre", au moins avec l'image utilisée ici.

Cependant, il y a un comportement que je ne m'explique pas:
1/ Exécutez l'exemple tel quel, puis appuyez sur chaque bouton. Stoppez

2/ Exécutez et testez l'exemple après avoir renommé "Icon 2.ico" en "XIcon 2.ico" par exemple, pour qu'il ne soit plus "vu" pour l'image du bouton.

3/ Exécutez et testez l'exemple après avoir renommé "Icon 1.ico" en "XIcon 1.ico" par exemple, pour qu'il ne soit plus "vu" pour l'image du bouton. .........Saperlipopette !

A votre avis:
1/ Par quel biais le "Case $Icon1 est-il exécuté ?
2/ Comment empêcher ce déclenchement?

Les plus hardis enlèveront le "Sleep (1000)", mais ils l'auront bien cherché... :roll:

Merci, et bonne journée.

Re: [..] Comportement controle "Icon" sans image

Posté : mar. 20 oct. 2015 22:56
par mikell
Si ".\Icon 1.ico" n'existe pas :

Code : Tout sélectionner

Global $Icon1 = GUICtrlCreateIcon(".\Icon 1.ico", -1, 36, 20, 48, 48)
Là le controle n'est pas créé, échec donc $Icon1 = 0 et Case $Icon1 (Case 0) fait déclencher le beep en permanence

Code : Tout sélectionner

Global $Icon1 = GUICtrlCreateIcon("", -1, 36, 20, 48, 48)
GUICtrlSetImage(-1, ".\Icon 1.ico", -1)
Là le controle est bien créé mais le clic n'est pas détecté à cause de l'absence d'image donc déclenche pas

Je vois pas bien ce que tu essaies de faire en fait :shock:

Re: [..] Comportement controle "Icon" sans image

Posté : mer. 21 oct. 2015 06:58
par mimione
L'exemple que j'ai fourni est un code minimum pour illustrer mon interrogation.

En réalité, j'ai eu ce problème dans une usine à gaz un peu plus compliquée, et lors d'une installation via un téléchargement, l'absence de l'icône (qui avait été oubliée dans le "package"), a provoqué un appel permanent d'une fonction, et j'ai perdu la main non seulement sur le programme, mais également sur la machine. El là, galère pour récupérer la situation.
C'est la raison pour laquelle j'ai voulu comprendre, puis éviter le problème.
L'écriture que tu proposes est un moindre mal (un non fonctionnement au lieu d'un appel permanent), hélas, Koda, que j'utilise pour définir mon interface, utilise la première méthode d'écriture.
Je reste donc sous la menace (pas bien grande il est vrai), d'une disparition d'icône et des désagréments qui vont avec.
Merci cependant pour l'explication.

Re: [..] Comportement controle "Icon" sans image

Posté : mer. 21 oct. 2015 13:45
par mikell
Koda ne fait que te proposer une gui-type que tu peux (dois ?) adapter au mieux
Tu peux aussi faire une simple - mais toujours bienvenue - gestion d'erreur avant de lancer la fonction

Re: [R] Comportement controle "Icon" sans image

Posté : mer. 21 oct. 2015 18:43
par mimione
En effet, la gestion d'erreur s'impose.
Mais il vaut mieux la penser dès le début du projet.

Je ne suis pas très fan de la modification du code généré par Koda, car à chaque reprise de l'interface (corrections/ ajouts, Ajustages), il faut se recoltiner les modifications....

Merci pour les avis. Je >> [R]