Changement de couleur dynamique dans un Composant

Signaler
Messages postés
24
Date d'inscription
samedi 8 décembre 2007
Statut
Membre
Dernière intervention
16 mars 2010
-
Messages postés
24
Date d'inscription
samedi 8 décembre 2007
Statut
Membre
Dernière intervention
16 mars 2010
-
Bonjour, je dois créer un composant sous delphi, donc j'avais pensé créer une EditBox "Customisé", mais j'ai un petit souci:
J'aimerais changer la couleur de police dynamiquement suivant que le nombre rentré soit positif ou négatif (vert pour positif, rouge pour negatif,...)
Mais je ne sais pas où rentrer mon code pour qu'il se retrouve dans le procedure OnChange de mon Edit...
Pour bien faire, il faudrait qu'à chaque touche appuyé, une procedure vérifie le contenu de l'Edit, mais je ne sais pas comment faire...

Une petite aide serait grandement appréciée!!

Merci!

3 réponses


Salut,

Tu devrais plutot partir d'un TCustomControl et tu aurais un truc du style :

  TMonCompo= class(TCustomControl)
  Private
    fOnChange: TNotifyEvent;
    fMySwitch:Integer;
    fBackGroundColor:TColor;
    Procedure SetMySwitch(Value:Integer);
  protected
  public
    constructor Create(ACollection: TCollection); override;
    destructor Destroy; override;
  published
    Property OnChange : TNotifyEvent Read fOnChange Write fOnChange; 
    Property MySwitch:Integer Read fMySwitch Write SetMySwitch;
  end;   
 
  ////
  ....
  ////
 
procedure TMonCompo.Paint;
begin
  InHerited;
  With Canvas Do
    Begin
      Color:=fBackGroundColor;
      Rectangle(ClientRect);
    End; 
end;

Procedure TMonCompo.SetMySwitch(Value:Integer);
Begin
  If Value<>fMySwitch Then
    Begin
      If MySwitch>0 Then fBackGroundColor:=ClBlack
      Else fBackGroundColor:=ClWhite;
      fMySwitch:=Value;
      If Assigned(fOnChange) Then fOnChange(Self);
      Invalidate;
    End;
End;   
Messages postés
24
Date d'inscription
samedi 8 décembre 2007
Statut
Membre
Dernière intervention
16 mars 2010

Salut,
Merci pour ta réponse, je vais essayer ce que tu me proposes, te tiens au courant...

PS: DSL, je n'ai pas pu répondre avant, hier j'ai travaillé tte la journée...
Messages postés
24
Date d'inscription
samedi 8 décembre 2007
Statut
Membre
Dernière intervention
16 mars 2010

Re:
le " fBackGroundColor:TColor; " ne passe pas; " [Erreur] Edit_Custom.pas(14): Identificateur non déclaré : 'TColor' "

Aurais tu une solution à me proposer? Il faut dire que j'ai gardé mon Tedit, je n'ai pas encore essayé ton TCustomControl, Pourrais tu expliquer ce qu'il propose de plus, que l'Edit normal?

Merci,
@ Plus!