http://www.netgocn.com Original
Tous les boutons n'ont pas de couleur dans les programmes Windows standard. Par conséquent, tous les composants de bouton fournis par Delphi n'ont pas non plus d'attributs de couleur.
Ici, je fournis une méthode pour faire des boutons d'ammonium avec des attributs de couleur à l'aide de composants personnalisés. Changez la couleur à volonté pendant la phase de conception, tout comme les composants fournis par Delphi lui-même (le code de cet article se fait sous Delphi 4.0).
premier pas
Ouvrez Delphi, sélectionnez le composant / nouveau composant du menu et remplissez manuellement la boîte déroulante de type ancêtre de la boîte de dialogue pop-up. Le terminera en fonction de cela. Le reste du contenu d'écriture dans la boîte de dialogue sera rempli à votre guise, mais vous devez noter que le nom de classe ne peut pas être le même que le nom de classe existant (y compris votre personnalisation), et vous devez également vous rappeler qu'il est défini L'emplacement d'installation du composant (le contenu dans la boîte déroulante de la page de palette) et l'emplacement de stockage des fichiers unitaires sur le disque (le contenu de la zone d'édition de nom de fichier unité), sinon où vous le trouverez dans le futur ? Cet article prend la valeur par défaut de Delphi Tbutton1 comme nom de classe.
Étape 2
Après avoir terminé le travail ci-dessus, appuyez sur le bouton OK ci-dessous et Delphi générera automatiquement un code de composant de base pour vous. (Cet article n'a été supprimé que. Tous les commentaires générés automatiquement) doivent être enregistrés.
Étape 3
Ajoutez notre code dans le cadre de code ci-dessus, bien sûr, c'est le principal travail que nous voulons faire.
1. Modifiez la partie de définition du type de données du fichier unitaire généré automatiquement par Delphi à:
taper
Tbutton1 = classe (tbutton)
Privé
Fcolor: tcolor;
Fcanvas: tcanvas;
ISFOCUSÉ: Boolean;
Procédure setColor (valeur: tcolor);
procédure cndrawitem (message var: twmDrawitem);
protégé
Procédure CreateParams (var paramètres: tcreateParams);
Procédure SetButtonstyle (Adefault: Boolean);
publique
Conclusion Create (Aowner: TCOMPONont);
Destructor détruire;
publié
Couleur de la propriété: TCOLOR LIRE FCOLOR WRITE SETCOLOR CLWHITE;
fin;
illustrer:
a.
b.
c. Faites la classe à laquelle ils ne peuvent pas être accessibles à l'extérieur.
2. Le registre de processus automatique de Delphi peut l'ignorer. Après son corps de processus, nous ajoutons manuellement le code suivant avant la fin.
// *** Constructeur ******************************************** ** **********
constructeur tbutton1.create (aowner: tcomponent);
Commencer
hérité de création (aowner);
Fcanvas: = tcanvas.create;
Fcolor: = clwhite; // couleur par défaut
fin;
// *** Destructor ********************************************** * *******
destructeur tbutton1.destroy;
Commencer
Fcanvas.free;
Hérité de détruire;
fin;
// *** Pour définir le style du bouton, le bouton doit être redéfini comme un bouton autodécarné *********************
Procédure tbutton1.CreateParams (paramètres var: tcreateParams);
Commencer
CreateParams hérités (PARAMS);
avec params do Style: = style ou bs_ownerdraw;
fin;
// *** Méthode d'écriture d'attribut ****************************************** ********* *******
Procédure tbutton1.setColor (valeur: tcolor);
Commencer
Fcolor: = valeur;
Invalider;
fin;
// *** Définir l'état du bouton ****************************************** ****** ****
Procédure tbutton1.setButtonstyle (Adefault: Boolean);
Commencer
Si adefault <> est focalisé alors
Commencer
Isfocus: = adefault;
Rafraîchir;
fin;
fin;
// *** Bouton de dessin ****************************************** * ******
procédure tbutton1.cndrawitem (message var: twmDrawitem);
var
Sosdown, Isdefault: Boolean;
Arect: Trect;
Flags: Longint;
DrawitemStruct: tdrawitemStruct;
WH: TSIZE;
Commencer
DrawitemStruct: = message.DrawitemStruct ^;
Fcanvas.handle: = drawitemStruct.hdc;
Arect: = clientrect;
avec drawitemstruct do
Commencer
Isdown: = itemstate et ods_selected <> 0;
IsDefault: = itemstate et ods_focus <> 0;
fin;
Flags: = DFCS_BUTTONPUSH ou DFCS_ADJUSTRECT;
Si l'os de l'espèce, les drapeaux: = drapeaux ou dfcs_pushed;
Si drawitemStruct.itemState et ods_disabled <> 0 alors
Flags: = drapeaux ou dfcs_inactive;
Si isfocé ou isdefault alors
Commencer
// dessine l'état lorsque le bouton se concentre sur
Fcanvas.pen.color: = clwindowframe;
Fcanvas.pen.width: = 1;
Fcanvas.brush.style: = bsclear;
Fcanvas.rectangle (arect.left, arect.top, arect.right, arect.bottom);
Flolatect (Arect, -1, -1);
fin;
Fcanvas.pen.color: = clbtnshadow;
Fcanvas.pen.width: = 1;
Fcanvas.brush.color: = fcolor;
Si l'apsification alors commencez
// dessine l'état lorsque le bouton est appuyé
Fcanvas.rectangle (arect.left, arect.top, arect.right, arect.bottom);
Flolatect (Arect, -1, -1);
fin d'autre
// dessiner un bouton sans but
DrawFrameControl (DrawitemStruct.hdc, Arect, DFC_BUTTON, FLAGS);
Fcanvas.fillrect (arect);
// dessiner du contenu texte de légende
Fcanvas.font: = self.font;
Arect: = clientrect;
wh: = fcanvas.texTextent (légende);
Fcanvas.pen.width: = 1;
Fcanvas.brush.style: = bsclear;
Si non activé alors
commencer // Lorsque le bouton échoue, vous devez dessiner un texte de légende une fois
Fcanvas.font.color: = clbtnhighlight;
Fcanvas.textout ((largeur div 2) - (wh.cx div 2) +1,
(hauteur div 2) - (wh.cy div 2) +1,
Légende);
Fcanvas.font.color: = clbtnshadow;
fin;
Fcanvas.textout ((largeur div 2) - (wh.cx div 2), (hauteur div 2) - (wh.cy div 2), légende);
// dessine la ligne pointillée du cadre intérieur lorsque vous obtenez le focus
Si isfocé et Isdefault, alors
Commencer
Arect: = clientrect;
Flolatect (Arect, -4, -4);
Fcanvas.pen.color: = clwindowframe;
Fcanvas.brush.color: = fcolor;
Drawfocusrect (fcanvas.handle, arect);
fin;
Fcanvas.handle: = 0;
fin;
//** La fin ******************************************** * *************
fin.
Étape 4: Après la vérification, confirmant que l'erreur est correcte, sélectionnez l'option Composant / Installer le menu Delphi. composant.
Si vous suivez complètement cet article, après avoir compilé et installé correctement, vous pouvez trouver un bouton avec la même icône que Tbutton dans l'onglet Échantillons de l'étiquette de composant Delphi. Créez un nouveau projet et placez ce bouton que nous utilisons sur le formulaire. Et ça? Grâce à sa propriété de couleur, vous définissez sa couleur à volonté.
Enfin, la méthode de dessin de bouton dans cet article adopte une méthode de dessin similaire à celle de TBUTTON de Delphi pour obtenir une apparence d'action similaire à celle de Delphi. Cependant, si vous souhaitez jouer, vous pouvez dessiner n'importe quel texte et graphisme sur la toile FCANVAS que vous souhaitez exprimer votre personnalité.
Si vous avez des questions, veuillez envoyer une lettre ou laisser un message.
Bienvenue pour essayer le logiciel de ce site: netgocn (réseau)