Composant "bouton/image" timgbtn

Soyez le premier à donner votre avis sur cette source.

Vue 10 297 fois - Téléchargée 1 712 fois

Description

TImgBtn est un composant à utiliser comme un bouton standard, mais son aspect graphique est géré par une image (glyph) composé des 4 états possibles du bouton : "Normal", "Survol de la souris", "Click de la souris" et "Grisé" (disabled).

TimgBtn est dérivé de TCustomControl. Il gère automatiquement la couleur de transparence lorsque un glyph lui est attribué (possibilité de changer cette couleur de transparence). Il accepte les TAction ainsi que les PopupMenu.

Conclusion :


Dans la prochaine version, le composant devrai gérer le Focus.

nb : Le composant s'intalle dans l'onglet "Exemple". Vous trouverez aussi un projet exemple dans le zip.

nb2 : Je me suis librement inspiré des composants relatifs aux "skins" présent dans code-source... Donc, merci aux auteurs respectifs.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_flagada
Messages postés
63
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
18 février 2011
-
J'ai l'impression qu'il se passe des trucs pas nets avec la transparence.
Déjà si je ne m'abuse la couleur de la transparence n'est pas prise en compte :
Si la transparence est activée c'est la couleur du pixel en haut à gauche de l'image qui est utilisée.
Je pense qu'il faudrait rajouter une ligne du style "TempImg.TransparentMode:=tmFixed;" non?

De plus si l'on essaye de changer la couleur de transparence on ne peut pas le faire, la valeur revient toujours à clFushia??
Spatul
Messages postés
12
Date d'inscription
mercredi 21 août 2002
Statut
Membre
Dernière intervention
9 octobre 2008
-
A prioris, le bug venait du fait que j'utilise une variable pour connaitre l'état visuel du bouton ("ImgValeur"). Cette variable est maintenant déclaré dans le "private" du composant, elle n'affecte donc plus les autres composant lors d'un appel au "MouseDown" pour afficher une autre fenetre en modal.
Merci de me tenir informé.
Spatul
Messages postés
12
Date d'inscription
mercredi 21 août 2002
Statut
Membre
Dernière intervention
9 octobre 2008
-
Je vais vérifier cela et essayer de trouver la correction. Merci
JulioDelphi
Messages postés
2349
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
12 -
4 mois et 2 ans après, je découvre un bug sur ce composant =)
Pour le provoquer c'est facile :
Form1 ouvre Form2 en modal :

begin
Form2.ShowModal;
end;

Ma Form2 contient des (excellents) TImgBtn. Malheureusement, ils sont en positions 'enfoncés'. Si je passe ma souris dessus, l'effet 'dessus' n'apparait pas. Si je clic, l'effet 'enfoncé' apprait lui par contre. Pour relever le bouton (position 'normale') je doit cliquer, maintenir enfoncé, déplacer ma souris hors du bouton. Là, la position 'normale' du bouton apparait. mais une fois de plus si je passe ma souris dessus, l'effet 'dessus' n'apparait toujours pas.

J'ai refait idem avec Form2.Show; et ça passe niquel.

Je récapitule : Les TImgBtn qui sont dans une form en showmodal n'ont pas un comportement visuel correct.
Voila !
JulioDelphi
Messages postés
2349
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
12 -
9/ 10 bravo !
-1 pour le png pas géré lol
:D a+

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.