Ver Mensaje Individual
  #5  
Antiguo 04-08-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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 [-]
{ *********************************************************************** }
{                                                                         }
{ DecComp - Unos sencillos componentes                                    }
{                                                                         }
{ Copyright (c) 2005 dec - davidesperalta (EN) gmail.com                  }
{ bajo la licencia GNU GPL >> ver en "licencia.txt"                       }
{                                                                         }
{ *********************************************************************** }

unit UFocoEdit;

interface

uses
  Messages, SysUtils, Classes,
  Controls, StdCtrls, Graphics,

  UTypesDecComp;

// Sencillo componente descendiente de TEdit que añade
// dos propiedades que permiten establecer el color y
// la fuente del mismo al obtener el foco del usuario
//
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 del componente. Damos al color
// por defecto que ha de tener el componente
// cuando este obtenga el foco. Creamos las
// instancias de TFont necesarias
//
constructor TFocoEdit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Color := $00F7F7F7;
  FColorEnfocado := clWhite;
  FCopiaFuente := TFont.Create;
  FFontEnfocado := TFont.Create;
end;

// Destructor del componente
//
destructor TFocoEdit.Destroy;
begin
  FFontEnfocado.Free;
  FCopiaFuente.Free;
  inherited Destroy;
end;

// Aprovechar que el componente obtiene el foco
// para cambiar el color y la fuente del mismo
// según lo determinara el usuario
//
procedure TFocoEdit.CMEnter(var Message: TCMGotFocus);
begin
  inherited;
  FCopiaColor := Self.Color;
  FCopiaFuente.Assign(Self.Font);
  Self.Color := FColorEnfocado;
  Font.Assign(FFontEnfocado);
end;

// Aprovechar que el componente pierde el foco
// para establecer el color y la fuente del mismo
// mendiante los valores previamente guardados en
// las variables correspondientes
//
procedure TFocoEdit.CMExit(var Message: TWMNoParams);
begin
  inherited;
  Self.Color := FCopiaColor;
  Self.Font.Assign(FCopiaFuente);
end;

// Establecer la fuente que podrá verse
// en el componente cuando este tome el foco
//
procedure TFocoEdit.FijarFuenteEnfocado(valor: TFont);
begin
  if FFontEnfocado <> valor then
    FFontEnfocado.Assign(valor);
end;

end.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 04-08-2006 a las 07:14:41.
Responder Con Cita