componente a partir do maskedit

02/02/2013

2

Criamos um novo componente, simples, a partir do maskedit para ja ter predefinidos alguns tipos de dados que utilizamos (abaixo);
Instanciamos um objeto em um form e quando vamos mudar o "TipoEdicao" ocorre um access violation. Onde pode estar o erro ?
Quando tentamos utilizar um form que ja tinha esse componente tambem ocorre o mesmo erro.
Alguem tem alguma ideia de onde esta o erro ?

Grato,


unit DXGETCODIGO;

interface

USES Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, MaskUtils;

type
TtpediEDICOES = ( tpediContaContabil, tpediApropriacao );

TdxGETCODIGO = class(TMaskEdit)
private
FOnEnter: TNotifyEvent;
FOnExit: TNotifyEvent;

KTipoEdicao: TtpediEDICOES;
protected
procedure DOEnter; override;
procedure DOExit; override;

procedure SetTipoEdicao(Value: TtpediEDICOES);
public
constructor Create(AOwner: TComponent); override;

published
property OnEnter: TNotifyEvent read FOnEnter write FOnEnter;
property OnExit: TNotifyEvent read FOnExit write FOnExit;

property TipoEdicao: TtpediEDICOES read KTipoEdicao write SetTipoEdicao;
end;

procedure Register;

implementation

USES StrUtils, DIXICH, DXOBRVCL;

constructor TdxGETCODIGO.Create(AOwner: TComponent);
begin

inherited Create(AOwner);

end;

procedure TdxGETCODIGO.SetTipoEdicao( Value: TtpediEDICOES );
begin

TEXT:= cntSTRINGNIL;

IF VALUE = tpediContaContabil THEN
BEGIN
WIDTH:= 129;
EditMask:= odxOBRVCL.PICTCTB;
END
ELSE IF Value = tpediApropriacao THEN
BEGIN
WIDTH:= 81;
EditMask:= odxOBRVCL.PICTAPROP; // ''a.aa.aaa;1; ''; //
END;

KTipoEdicao:= Value;

end;

procedure TdxGETCODIGO.DoEnter;
begin
if Assigned(FOnEnter) then FOnEnter(Self);
end;

procedure TdxGETCODIGO.DoExit;
begin
if Assigned(FOnExit) then FOnExit(Self);
end;

procedure Register;
begin
RegisterComponents(''DIXI'', [TdxGETCODIGO]);
end;

end.
Responder

Posts

05/02/2013

Bruno Leandro

o problema provavelmente esta na função SetTipoEdicao coloca um break point e faz uma depuração dentro ela.
Responder

05/02/2013

Bruno Leandro

pois problema de access violation acontece quando voce tenta acessar um objeto ainda nao criado ou já liberado
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar