Est il possible d'ajouter la couleur a un TBevel en sachant que celui ci n'a pas de Canvas ?
Est il possible d'ajouter la couleur a un TBevel en sachant que celui ci n'a pas de Canvas ?
Salut !
TBevel dérive chez moi de TGraphicControl qui dispose d'un canvas.
Il faudrait essayer de dériver de TBevel et surcharger la méthode Paint... Juste pour tester !
A plus !
Merci henderson:
J'ai reussi a mettre de la couleur sur le Tbevel mais j'ai un soucis avec deux commandes " Shape " et " Style " celle ci ne fonctionnent plus je ne vois pas pour l'instant comment faire
le .cpp
Le .h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "BevelColor.h" #pragma package(smart_init) //--------------------------------------------------------------------------- // ValidCtrCheck is used to assure that the components created do not have // any pure virtual functions. // static inline void ValidCtrCheck(BevelColor *) { new BevelColor(NULL); } //--------------------------------------------------------------------------- __fastcall BevelColor::BevelColor(TComponent* Owner) : TBevel(Owner) { } //--------------------------------------------------------------------------- void __fastcall BevelColor::Paint() { RECT CoRect; CoRect.left = 0; CoRect.top = 0; CoRect.right = Width; CoRect.bottom = Height; Canvas->Brush->Color = Couleur; Canvas->FillRect(CoRect); } //--------------------------------------------------------------------------- void __fastcall BevelColor::SetCouleur(TColor Value) { FCouleur = Value; Invalidate(); } //--------------------------------------------------------------------------- namespace Bevelcolor { void __fastcall PACKAGE Register() { TComponentClass classes[1] = {__classid(BevelColor)}; RegisterComponents("Perso", classes, 0); } } //---------------------------------------------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 //--------------------------------------------------------------------------- #ifndef BevelColorH #define BevelColorH //--------------------------------------------------------------------------- #include <SysUtils.hpp> #include <Classes.hpp> #include <Controls.hpp> #include <ExtCtrls.hpp> //--------------------------------------------------------------------------- class PACKAGE BevelColor : public TBevel { private: TColor FCouleur; protected: virtual void __fastcall BevelColor::SetCouleur(TColor Value); public: __fastcall BevelColor(TComponent* Owner); void __fastcall Paint(); __published: __property Align; __property Anchors; __property TColor Couleur = {read=FCouleur, write=SetCouleur}; // new propriete __property Constraints; __property Cursor; __property Height; __property HelpContext; __property HelpKeyword; __property HelpType; __property Hint; __property Left; __property Name; __property ParentShowHint; __property Shape; __property ShowHint; __property Style; __property Tag; __property Top; __property Visible; __property Width; }; //--------------------------------------------------------------------------- #endif
Bonsoir Blondelle,
Je ne suis pas très doué, mais est ce que le problème ne vient pas de là :
Si je comprends bien, à chaque fois que l'on choisi la couleur, on retrace un rectangle ... Il faudrait prendre en compte le fait qu'un utilisateur puisse changer de couleur en pleine "création" sans pour autant effacer le canvas (sauf erreur de ma part, je pense qu'on l'efface à chaque fois que l'on modifie la couleur de font).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Canvas->Brush->Color = Couleur; Canvas->FillRect(CoRect);
Bon j'espère ne pas dire de bétise ... mais qui ne tente rien n'a rien![]()
Merci ero-sennin:
Je ne pense pas etre plus doue, mais c'est sans doute ce qui se passe, je n'ai pas encore trouve comment retrouver les fonctions qui sont devenues inactives
Ta méthode paint, c'est une surcharge de la méthode de l'ancêtre?
Niveau C++, j'ai pas encore attaqué les composants dérivés... je suis plus doué en Delphi.
Partager