TSKINBUTTON : BOUTON PRÉSENTANT DIVERS ASPECTS SELON SON ÉTAT

Signaler
Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
-
Messages postés
1106
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/11986-tskinbutton-bouton-presentant-divers-aspects-selon-son-etat

Messages postés
1106
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
21
Pour le focus, il faut faire descendre de TCustomControl et non de TWinControl qui n'a aucun Canvas (ça serait embêtant). Ceci ne suffit pas, il faut publier les propriétés Enabled, Visible, TabOrder et TabStop.

Ensuite, tout se gère OnPaint avec l'appel: if Focused then DessineMoiUnBeauFocus;
Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
2
Pour le focus, il n'y a pas grand chose à faire, mise à part de descendre de TWinControl et de gérer le Focused. Je me souviens qu'il y a une ou deux autres petites choses à gérer mais je ne sais plus les-quelles
Sinon tu as raison, le focus n'est pas capital tant que l'on utilise pas le clavier. De plus les TGraphicControl utilisent moins de ressources que les TWinControl car ils n'ont pas de Handle de fenêtre.
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
en effet delphi m'avait signalé un avertissement pou le SetAutoSize ("warning: SetAutoSize method hides parent's method" si ma mémoire est bonne) mais je ne savais pas trop comment passer outre, j'appliquerais ta solution pour une future mise à jour ;o)

j'ai fait ce composant pour la version 2 d'un de mes programmes (celui de mon site en fait), et le focus n'est pas obligatoire même s'il serait appréciable... je suppose qu'il faut rajouter un "if Focused" dans la méthode Paint, et dessiner ainsi l'effet du focus sur le composant ?

en tout cas merci pour ton encouragement ;o)
Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
2
Et pour les félicitations il faut aussi être indulgent ?

Je n'ai que peu de remarques :
AutoSize existe déjà dans la classe de base TGraphicControl. Il suffit donc de la publier et de surcharger le SetAutosize :
Procedure SetAutosize (Value: Boolean );Override;
Juste pour effectuer un Invalidate en cas de changement.

Bravo pour cet exellent début...

P.S. : la prochaine version devrait descendre de TWinControl pour avoir la possiblité de détenir le focus.