Changement de couleur dynamique dans un Composant

cs_mikevkb Messages postés 24 Date d'inscription samedi 8 décembre 2007 Statut Membre Dernière intervention 16 mars 2010 - 3 févr. 2009 à 11:16
cs_mikevkb Messages postés 24 Date d'inscription samedi 8 décembre 2007 Statut Membre Dernière intervention 16 mars 2010 - 5 févr. 2009 à 11:30
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

Utilisateur anonyme
3 févr. 2009 à 12:28
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;   
0
cs_mikevkb Messages postés 24 Date d'inscription samedi 8 décembre 2007 Statut Membre Dernière intervention 16 mars 2010
5 févr. 2009 à 09:44
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...
0
cs_mikevkb Messages postés 24 Date d'inscription samedi 8 décembre 2007 Statut Membre Dernière intervention 16 mars 2010
5 févr. 2009 à 11:30
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!
0