propriedade onchange em componente criado
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.
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
Curtidas 0
Respostas
Pjrm1470
30/10/2013
primeiro seu edit está sem nenhum metodo associado ao evento:
Observação: Em algum momento você deve definir qual metodo o evento deve executar. Exemplo:
Entenda que o TNotifyEvent é uma procedure do objeto. Você tem de declarar o metodo conforme a declaração do evento:
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.
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.
GOSTEI 0