Nao sei se estou errado..

constructor TColors.Create; 
begin 
inherited;       //Faltou esta linha 
FFocusColor := $00FFEFDF; 
FRightColor := $00DFFFEF; 
FWrongColor := $00EFDFFF; 
end; 

    
        Wesley




From: Willian Jhonnes Lara dos Santos 
Sent: Monday, October 13, 2008 2:07 PM
To: delphi-br@yahoogrupos.com.br 
Subject: [delphi-br] Erro ao instanciar classe em componente


Olá, boa tarde a todos... 

Criei alguns componentes para suprir algumas necessidades de 
desenvolvimento na empresa para a qual trabalho, os quais têm a 
característica de colorizar o componente (TEdit, TMaskEdit, TComboBox, 
etc.) conforme foco e preenchimento. Para agrupar as propriedades das 
cores em um lugar único, criei uma classe para elas [1]. Em um 
componente descendente do TMaskEdit, a classe é instanciada sem problema 
[2], mas em um componente descendente do TEdit, ela não é instanciada, 
mesmo com a indicação em seu construtor [3]. 

Alguém tem alguma idéia de qual seja o problema? 

[]'s 

[1] - { TColors } 
TColors = class(TGraphicsObject) 
private 
{ Private declarations } 
FFocusColor, 
FRightColor, 
FWrongColor: TColor; 
FNotify: IChangeNotifier; 
protected 
{ Protected declarations } 
procedure Changed; override; 
procedure SetFocusColor(Value: TColor); 
procedure SetRightColor(Value: TColor); 
procedure SetWrongColor(Value: TColor); 
public 
{ Public declarations } 
constructor Create; 
destructor Destroy; override; 
procedure Assign(Source: TPersistent); override; 
published 
{ Published declarations } 
property FocusColor: TColor read FFocusColor write SetFocusColor; 
property RightColor: TColor read FRightColor write SetRightColor; 
property WrongColor: TColor read FWrongColor write SetWrongColor; 
end; 

{ TColors } 

procedure TColors.Assign(Source: TPersistent); 
begin 
if Source is TColors then 
begin 
Lock; 
try 
TColors(Source).Lock; 
try 
FFocusColor := TColors(Source).FocusColor; 
FRightColor := TColors(Source).RightColor; 
FWrongColor := TColors(Source).WrongColor; 
finally 
TColors(Source).Unlock; 
end; 
finally 
Unlock; 
end; 
Exit; 
end; 
inherited Assign(Source); 
end; 

procedure TColors.Changed; 
begin 
inherited Changed; 
if FNotify <> nil then 
FNotify.Changed; 
end; 

constructor TColors.Create; 
begin 
FFocusColor := $00FFEFDF; 
FRightColor := $00DFFFEF; 
FWrongColor := $00EFDFFF; 
end; 

destructor TColors.Destroy; 
begin 
FreeInstance; 
end; 

procedure TColors.SetFocusColor(Value: TColor); 
begin 
if FFocusColor <> Value then 
begin 
FFocusColor := Value; 
Changed; 
end; 
end; 

procedure TColors.SetRightColor(Value: TColor); 
begin 
if FRightColor <> Value then 
begin 
FRightColor := Value; 
Changed; 
end; 
end; 

procedure TColors.SetWrongColor(Value: TColor); 
begin 
if FWrongColor <> Value then 
begin 
FWrongColor := Value; 
Changed; 
end; 
end; 

----------------------------------------------------- 

[2] - { TTutorialMaskEdit } 
TTutorialMaskEdit = class(TMaskEdit) 
private 
{ Private declarations } 
FMandatory, 
FRequired, 
FColorize, 
FValidate, 
FSaveLiterals, 
FShowMessages: Boolean; 
FColors: TColors; 
FMaskType: TMaskType; 
FAlternate: TAlternableMask; 
FCharForBlanks: Char; 
FOriginalColor: TColor; 
FControlMask: Byte; 
FMsgs: TMaskEditMessages; 
FAlternableShortCut: TShortCut; 
FMsgType: TMessageType; 
procedure SetMask(Mask: TMaskType); 
procedure SetColors(Value: TColors); 
procedure SetColorize(Value: Boolean); 
procedure SetRequired(Value: Boolean); 
procedure SetValidate(Value: Boolean); 
procedure SetMessages(Value: TMaskEditMessages); 
protected 
{ Protected declarations } 
procedure DoEnter; override; 
procedure DoExit; override; 
procedure KeyUp(var Key: Word; Shift: TShiftState); override; 
public 
{ Public declarations } 
published 
{ Published declarations } 
constructor Create(AOwner: TComponent); override; 
property Mandatory: Boolean read FMandatory write FMandatory 
default False; 
property Colorize: Boolean read FColorize write SetColorize 
default True; 
property Required: Boolean read FRequired write SetRequired 
default True; 
property Validate: Boolean read FValidate write SetValidate 
default True; 
property SaveLiterals: Boolean read FSaveLiterals write 
FSaveLiterals default False; 
property MaskType: TMaskType read FMaskType write SetMask; 
property Colors: TColors read FColors write SetColors; 
property AlternableMasks: TAlternableMask read FAlternate write 
FAlternate; 
property CharForBlanks: Char read FCharForBlanks write FCharForBlanks; 
property AlternableShortCut: TShortCut read FAlternableShortCut 
write FAlternableShortCut; 
property ShowMessages: Boolean read FShowMessages write FShowMessages; 
property Messages: TMaskEditMessages read FMsgs write SetMessages; 
property MessageType: TMessageType read FMsgType write FMsgType; 
end; 

. 
. 
. 

constructor TTutorialMaskEdit.Create(AOwner: TComponent); 
begin 
inherited Create(AOwner); 
SetMask(mtCustom); 
FMandatory := False; 
FRequired := True; 
FColorize := True; 
FColors := TColors.Create; 
FMsgs := TMaskEditMessages.Create; 
FCharForBlanks := #32; 
FSaveLiterals := False; 
FControlMask := 0; 
end; 

----------------------------------------------------- 

[3] - { TTutorialDateEdit } 
TTutorialDateEdit = class(TEdit) 
private 
{ Private declarations } 
FMinDate, 
FMaxDate: TDate; 
FMandatoryState, 
FMandatory, 
FShowMessages, 
FColorize, 
FRequired : Boolean; 
FMask: String; 
FMsgs: TDateEditMessages; 
FMsgType: TMessageType; 
FColors: TColors; 
function GetDate: TDate; 
procedure SetDate(D: TDate); 
procedure SetMessages(Value: TDateEditMessages); 
procedure SetColors(Value: TColors); 
procedure SetColorize(Value: Boolean); 
procedure SetRequired(Value: Boolean); 
protected 
{ Protected declarations } 
procedure KeyPress(var Key: Char); override; 
procedure KeyUp(var Key: Word; Shift: TShiftState); override; 
procedure DoEnter; override; 
procedure DoExit; override; 
procedure Change; override; 
public 
{ Public declarations } 
published 
{ Published declarations } 
constructor Create(AOwner: TComponent); 
property DateValue: TDate read GetDate write SetDate; 
property MinDate: TDate read FMinDate write FMinDate; 
property MaxDate: TDate read FMaxDate write FMaxDate; 
property Mandatory: Boolean read FMandatory write FMandatory; 
property ShowMessages: Boolean read FShowMessages write FShowMessages; 
property Colorize: Boolean read FColorize write SetColorize; 
property Required: Boolean read FRequired write SetRequired; 
property Mask: String read FMask; 
property Messages: TDateEditMessages read FMsgs write SetMessages; 
property MessageType: TMessageType read FMsgType write FMsgType; 
property Colors: TColors read FColors write SetColors; 
end; 

. 
. 
. 

constructor TTutorialDateEdit.Create(AOwner: TComponent); 
begin 
inherited Create(AOwner); 
FRequired := True; 
FColorize := True; 
FColors := TColors.Create; 
FMsgs := TDateEditMessages.Create; 
FMask := 'DD/MM/YYYY'; 
SetDate(Date); 
FMsgType := mtAlert; 
end; 
---------------------------------------------------
Att.:
Willian Jhonnes L. dos Santos
Analista/Desenvolvedor Object/Free Pascal
[EMAIL PROTECTED]
---------------------------------------------------
Seja livre. Use Linux.
Grupo de Usuários GNU/Linux de São José dos Pinhais
Linux user number 449753
---------------------------------------------------
Powered by Slackware Linux 12.0
Kernel 2.6.21.5-custom
---------------------------------------------------

Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara 
@ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses


 

__________ Information from ESET NOD32 Antivirus, version of virus signature 
database 3519 (20081013) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com


[As partes desta mensagem que não continham texto foram removidas]

Responder a