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]