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

cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 - 13 juin 2002 à 00:47
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 - 20 juil. 2004 à 21:35
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

cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
20 juil. 2004 à 21:35
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;
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
13 juin 2002 à 00:47
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.
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
13 juin 2002 à 00:00
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)
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
12 juin 2002 à 23:52
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.
Rejoignez-nous