Fórum Que comando usar pra nao sobrepor o codigo do componente?? #394726
29/01/2011
0
Marcos Silva
Curtir tópico
+ 0Posts
29/01/2011
Vander
Gostei + 0
30/01/2011
Marcos Silva
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Mask, Variants, ComCtrls; type
TSDSDateEdit = class(TMaskEdit )
private
FColorEnter : TColor;
FColorExit : TColor;
procedure CorEntrada(Sender : TObject);
procedure CorSaida(Sender : TObject);
procedure SetColorEnter(NewColor : TColor);
procedure SetColorExit(NewColor : TColor);
protected
FOnEnter : TNotifyEvent;
FOnExit : TNotifyEvent;
public
constructor Create(AOwner :TComponent);override;
published
property ColorEnter : TColor read FColorEnter write SetColorEnter;
property ColorExit : TColor read FColorExit write SetColorExit;
property OnEnter;
property OnExit;
end; procedure Register; implementation procedure Register;
begin
RegisterComponents('SDS', [TSDSDateEdit]);
end; constructor TSDSDateEdit.Create(AOwner : TComponent);
begin
inherited Create(AOwner);
font.Name:='Arial';
FColorEnter:=$0015CBF9;
Text:=Datetostr(Date);
FColorExit:=clwhite;
FOnEnter:=OnEnter;
OnEnter:=CorEntrada;
FOnExit:=OnExit;
OnExit:=CorSaida;
EditMask:='!99/99/9999;1;_';
end; procedure TSDSDateEdit.SetColorEnter(NewColor : TColor);
begin
FColorEnter:=NewColor;
Invalidate;
end; procedure TSDSDateEdit.SetColorExit(NewColor : TColor);
begin
FColorExit:=NewColor;
Invalidate;
end; procedure TSDSDateEdit.CorEntrada(Sender : TObject);
begin
Color:=FColorEnter;
end; procedure TSDSDateEdit.CorSaida(Sender : TObject);
begin
try
StrToDate(Text);
//ShowMessage(Text + ' CERTO.');
except
begin
ShowMessage(Text + ' NÃO é data válida.');
Setfocus;
end;
end; Color:=FColorExit;
end; end.
Gostei + 0
30/01/2011
Marco Salles
procedure DoExit;override; tb vc tem que pintar o controle para que algumas definiçoes aparecem como por exemplo o Text e o Color que são propriedades do ancestral .. Todo componente visual deve mapear a mensagem WMNPaint , exitem classes ja possuem esta implementação , como é o caso da TGraphicControl e TCustomControl . Porém o TmaskEdit não descente de nenhuma dessas clases . O Invalidade que vc esta usando é para o caso de repintar o controle , algo que vc não faz . Vc não esta repitando-o então é desnecessário esta chamada
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)