Hola,
Tal vez te conviniera utilizar un componente derivado de "TEdit" que implementara ya lo que necesitas. El siguiente es un componente que escribí hace tiempo (aunque encontrarás muchos más similares y acaso mejor pensados y llevados a cabo) y que te permite asignar un color al "TEdit" cuando este tome el "foco" del usuario, y otro color, para cuando el "TEdit" pierda el "foco" del usuario, o no lo tenga, simplemente.
Lo he "sacado" de un conjunto de componentes y no lo he probado por separado. Si tienes algún problema hazlo saber por aquí. Puedes adaptarlo en todo caso a tus necesidades como mejor te parezca:
Código Delphi
[-]
unit UFocoEdit;
interface
uses
Messages, SysUtils, Classes,
Controls, StdCtrls, Graphics,
UTypesDecComp;
type
TFocoEdit = class(TEdit)
private
FAcercade: TAcercade;
published
property Acercade: TAcercade read FAcercade write FAcercade stored false;
private
FCopiaColor: TColor;
FCopiaFuente: TFont;
FFontEnfocado: TFont;
FColorEnfocado: TColor;
procedure FijarFuenteEnfocado(valor: TFont);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
protected
procedure CMExit(var Message: TWMNoParams); message CM_EXIT;
procedure CMEnter(var Message: TCMGotFocus); message CM_ENTER;
published
property FuenteEnfocado: TFont read FFontEnfocado write FijarFuenteEnfocado;
property ColorEnfocado: TColor read FColorEnfocado write FColorEnfocado default clWhite;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TFocoEdit]);
end;
constructor TFocoEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Color := $00F7F7F7;
FColorEnfocado := clWhite;
FCopiaFuente := TFont.Create;
FFontEnfocado := TFont.Create;
end;
destructor TFocoEdit.Destroy;
begin
FFontEnfocado.Free;
FCopiaFuente.Free;
inherited Destroy;
end;
procedure TFocoEdit.CMEnter(var Message: TCMGotFocus);
begin
inherited;
FCopiaColor := Self.Color;
FCopiaFuente.Assign(Self.Font);
Self.Color := FColorEnfocado;
Font.Assign(FFontEnfocado);
end;
procedure TFocoEdit.CMExit(var Message: TWMNoParams);
begin
inherited;
Self.Color := FCopiaColor;
Self.Font.Assign(FCopiaFuente);
end;
procedure TFocoEdit.FijarFuenteEnfocado(valor: TFont);
begin
if FFontEnfocado <> valor then
FFontEnfocado.Assign(valor);
end;
end.