Fórum propriedade onchange em componente criado #459860

30/10/2013

0

bom dia, sou novo aki, e estou com um probleminha nasmãos, criei um componente que consiste em um panel com um edit dentro, quero colocar a propriedade OnChange do edit, mas ele não executa nada quandouso o OnChange do meu componente, o que estou fazendo de errado ? aki vai parte do código que estou usando :

unit MeuEdit;

interface

uses (...)

type

TMeuEdit = class(TPanel)
private
Edt : TEdit;
(...)
FEditChange: TNotifyEvent;

{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
Constructor Create(AOwner: TComponent);override;
destructor Destroy; override;
published
{ Published declarations }

property OnEditChange: TNotifyEvent read FEditChange write FEditChange;
property OnEditChange: TNotifyEvent read FEditExit write FEditExit;

end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Samples', [TMeuEdit]);
end;

constructor TMeuEdit.Create(AOwner: TComponent);
begin

inherited Create(Aowner);
Self.Parent := TWinControl(Aowner);

Edt := TEdit.Create(Self);
with Edt do
begin
Parent := Self;
Left := 8;
(...)
end;

with Self do
begin
Caption := EmptyStr;
(...)
end;

end;

destructor TMeuEdit.Destroy;
begin

inherited;
end;

(...)

end.

agradeço quem puder me ajudar.
Denilson Gama

Denilson Gama

Responder

Posts

31/10/2013

Pjrm1470

primeiro seu edit está sem nenhum metodo associado ao evento:
procedure MeuOnChange(Sender: TObject);

implementation

procedure MeuOnChange(Sender: TObject);
begin
  ShowMessage('Funciona');
end;

Observação: Em algum momento você deve definir qual metodo o evento deve executar. Exemplo:
SeuEdit.OnChange := MeuOnChange; // meu metodo acima.

Entenda que o TNotifyEvent é uma procedure do objeto. Você tem de declarar o metodo conforme a declaração do evento:
// se a declaração do TNotifyEvent na unit "Classes" é:
TNotifyEvent = procedure(Sender: TObject) of object;
// então seu metodo deve ser declarado como no exemplo:
procedure ColoqueUmNomeAqui(Sender: TObject);


Não sei se isso lhe ajudará, pois tentei explicar de forma simples. Veja seu codigo e tente corrigir conforme as instruções que dei. (interprete).
Abraço,
pjrm1470.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar