Ta na mão um exemplo de componente, veja DoEnter e DoExit é so isso q vc 
precisa.

unit NumTextoEdit;

interface

uses
  Windows, SysUtils, Classes, Controls, StdCtrls, Graphics;

type
  TTipo = ( ttTexto, ttNumero );

type
  TNumTextoEdit = class(TEdit)
  private
    bTipo        : Boolean;
    FTipo        : TTipo;
    FCasaDecimal : Integer;
    ACasaDecimal : Integer;
    procedure GetFTipo(const Value: TTipo);
    function  SetFTipo: TTipo;
    function  AjustaTexto(pTexto: String; pTamanho: Integer; pFont: 
TFont): String;
    procedure GetFCasaDecimal(const Value: Integer);
    function  SetFCasaDecimal: Integer;
  protected
    procedure DoEnter; override;
    procedure DoExit; override;
    procedure KeyPress(var Key: Char); override;
  public
    function    AjustaValor(pValor : String) : String;
    constructor Create(AOwner: TComponent); override;
  published
    property Tipo        : TTipo   read SetFTipo        write 
GetFTipo        default ttTexto;
    property CasaDecimal : Integer read SetFCasaDecimal write 
GetFCasaDecimal default 0;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Eduardo', [TNumTextoEdit]);
end;

{ TNumTextoEdit }

function TNumTextoEdit.AjustaValor(pValor : String) : String;
var
   i : Integer;

begin
   Result := '';
   for i := 1 to Length(pValor) do
   begin
      if pValor[i] in ['0'..'9', DecimalSeparator] then
         Result := Result + pValor[i];
   end;
end;

function TNumTextoEdit.AjustaTexto(pTexto : String; pTamanho : Integer; 
pFont : TFont) : String;
var
   vInt    : Integer;
   vCanvas : TCanvas;
   vHwnd   : HWND;

begin

   vCanvas        := TCanvas.Create;
   vCanvas.Handle := GetDeviceContext(vHwnd);
   vCanvas.Font   := pFont;
   vInt           := round((pTamanho - vCanvas.TextWidth(pTexto) - 8) / 
vCanvas.TextWidth(' '));
   Result         := StringOfChar(' ', vInt) + pTexto;

end;

constructor TNumTextoEdit.Create(AOwner: TComponent);
begin
  inherited;
  Color        := clInfoBk;
  bTipo        := True;
  ACasaDecimal := -1;
end;

procedure TNumTextoEdit.DoEnter;
begin
  inherited;
  if Tipo = ttNumero then
     Self.Text := AjustaValor(Self.Text);
  Self.Text := Trim(Self.Text);
  Self.SelectAll;
  Color := clWindow;
end;

procedure TNumTextoEdit.DoExit;
var
   s : String;
   i : Integer;

begin
  inherited;
  if Tipo = ttNumero then
  begin
     if Trim(Self.Text) <> '' then
     begin
        s := '';
        for i := 1 to CasaDecimal do
           s := s + '0';
        if Trim(s) <> '' then
           Self.Text := FormatFloat('#,##0.' + s, 
StrToFloat(Trim(Self.Text)))
        else
           Self.Text := FormatFloat('#,##0', StrToFloat(Trim(Self.Text)));
     end
     else
        Self.Text := '0';
     Self.Text := AjustaTexto(Self.Text, Self.Width, Self.Font);
  end;
  Color := clInfoBk;
end;

procedure TNumTextoEdit.GetFCasaDecimal(const Value: Integer);
begin

   FCasaDecimal := Value;

end;

procedure TNumTextoEdit.GetFTipo(const Value: TTipo);
begin

   FTipo := Value;

end;

procedure TNumTextoEdit.KeyPress(var Key: Char);
begin
  inherited;
  if (Tipo = ttNumero) then
  begin
     if (Trim(Self.Text) <> '') and (CasaDecimal <= 0) and (Key = 
DecimalSeparator) then
        Key := #0;
     if (not (Key in ['0'..'9', DecimalSeparator, #8, #9, #13])) then
        Key := #0;
     if (Key = DecimalSeparator) and (Pos(DecimalSeparator, Self.Text) > 
0) then
        Key := #0;
     if (not (Key in [#8, #9, #13])) and ((FCasaDecimal > 0) and 
(Self.SelStart >= (Pos(DecimalSeparator, Self.Text) + 2)) ) then
        Key := #0;
  end;

end;

function TNumTextoEdit.SetFCasaDecimal: Integer;
var
   i : Integer;
   s : String;

begin

   if FCasaDecimal > 0 then
   begin
      s := '';
      for i := 1 to FCasaDecimal do
         s := s + '0';
      Result    := FCasaDecimal;
      if ACasaDecimal <> FCasaDecimal then
         Self.Text := FormatFloat('#,##0.' + s, 
StrToFloat(AjustaValor(Self.Text)));
   end
   else
   begin
      if ACasaDecimal <> FCasaDecimal then
         Self.Text := FormatFloat('#,##0', 
StrToFloat(AjustaValor(Self.Text)));
      Result := 0;
   end;
   ACasaDecimal := FCasaDecimal;
   if (bTipo) then
      Self.Text := AjustaTexto(Self.Text, Self.Width, Self.Font);

end;

function TNumTextoEdit.SetFTipo: TTipo;
begin

   Result := FTipo;
   if (FTipo = ttNumero) then
   begin
      if not (bTipo) then
         Exit;
      Self.Text := '0';
      bTipo     := False;
      Self.Text := AjustaTexto(Self.Text, Self.Width, Self.Font);
   end
   else
   begin
      bTipo     := True;
      Self.Text := Self.Name;
   end;

end;

end.

Eduardo

Cleiton escreveu:
>
> Oi Erivando...
>
> A procedure que você me passou deu certinho. Era bem isso mesmo que eu 
> queria.
>
> Valeu
> ----- Original Message -----
> From: [EMAIL PROTECTED] <mailto:erivando%40inforamos.com>
> To: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
> Sent: Thursday, March 29, 2007 4:00 PM
> Subject: Re: [delphi-br] cor do edit quando em foco
>
> faz assim: coloca em seu codigo:
> ....
> procedure entraCor(Sender: TObject);
> procedure saiCor(Sender: TObject);
> ....
>
> procedure TFrmCarnePag.entraCor(Sender: TObject);
> begin
> if (Sender is TEdit) then
> (Sender as TEdit).Color := RGB(255,255,230)
> else
> if (Sender is TComboBox) then
> (Sender as TComboBox).Color := RGB(255,255,230)
> else
> if (Sender is TMemo) then
> (Sender as TMemo).Color := RGB(255,255,230)
> else
> if (Sender is TMaskEdit) then
> (Sender as TMaskEdit).Color := RGB(255,255,230)
> end;
>
> procedure TFrmCarnePag.saiCor(Sender: TObject);
> begin
> if (Sender is TEdit) then
> (Sender as TEdit).Color := RGB(255,255,255)
> else
> if (Sender is TComboBox) then
> (Sender as TComboBox).Color := RGB(255,255,255)
> else
> if (Sender is TMemo) then
> (Sender as TMemo).Color := RGB(255,255,255)
> else
> if (Sender is TMaskEdit) then
> (Sender as TMaskEdit).Color := RGB(255,255,255)
> end;
>
> depois na propriedade Events em OnEnter = entraCor e OnExit = SaiCor
>
> Obs: vc pode usar a cor que lhe agradar trocando o RGB(255,255,230)
>
> Espero ter lhe ajudado
>
> Erivando Sena
> msn: [EMAIL PROTECTED] <mailto:inforamos%40inforamos.com>
>
> INFORAMOS - Soluções em Sistemas
> www.inforamos.com
> ----- Original Message -----
> From: Cleiton
> To: Delhpi
> Sent: Thursday, March 29, 2007 2:38 PM
> Subject: [delphi-br] cor do edit quando em foco
>
> Pessoal...
>
> Como faço para deixar o campo Edit ou DBedit quando o mesmo estiver em 
> foco?
> -- 
> Esta mensagem foi verificada pelo sistema de antivírus e
> acredita-se estar livre de perigo.
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> ----------------------------------------------------------
>
> No virus found in this incoming message.
> Checked by AVG Free Edition.
> Version: 7.5.446 / Virus Database: 268.18.22/739 - Release Date: 
> 29/3/2007 13:36
>
> -- 
> Esta mensagem foi verificada pelo sistema de antivírus e
> acredita-se estar livre de perigo.
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  


                
_______________________________________________________ 
Yahoo! Mail - Sempre a melhor opção para você! 
Experimente já e veja as novidades. 
http://br.yahoo.com/mailbeta/tudonovo/

Responder a