Fórum Componentes - Criação de Evento #311241
01/02/2006
0
Estou com um problemão na criação de um evento, preciso fazer o seguinte:
Fazer com que ao chamar esse evento ele possa receber um parâmetro por exemplo MeuComponenteValidar(nome);
Sendo q no evento validar existe a codificação pra tratar esse parâmetro passado: algo tipow:
procedure Form1.MeuComponenteValidar(Sender: TObject; pCampo: TComponent) begin if VarIsEmpty(pCampo.Text) then ShowMessage(´O nome precisa ser informado´); end;
Fiz o seguinte criei uma variavel pValidar: TNotifyEvent na seção private do componente, daí na sessão published fiz a propriedade referente property Validar:TNotifyEvent read FValidar write SetValidar; dai fiz o a procedure SetValidar.
Só q não sei como faço pra passar esse parâmetro, gostaria q vcs me ajudassem to mandando todo meu código:
unit UFormControl;
interface
uses
SysUtils, Classes, DBClient, DB, Forms;
type
TFormControl = class(TComponent)
private
{ Private declarations }
FValidar: TNotifyEvent;
procedure SetValidar(const Value: TNotifyEvent);
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
property Validar:TNotifyEvent read FValidar write SetValidar;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents(´componentes´, [TFormControl]);
end;
{ TFormControl }
procedure TFormControl.SetValidar(const Value: TNotifyEvent);
begin
FValidar := Value;
end;
end.
Agradeço a ajuda...
Gardel
Curtir tópico
+ 0Posts
01/02/2006
Bruno Belchior
type TMeuEvento = procedure (Sender: TObject; pString: string) of object;
property MeuEvento: TMeuEvento read FMeuEvento write FMeuEvento;
procedure DoMeuEvento(Sender: TObject; pString: string); virtual;
Gostei + 0
02/02/2006
Gardel
Não consegui entender direito como vc fez:
1º Qdo cria um novo evento a partir da procedure essa procedure fica sem nome? tipow procedure algo (Sender: TObject; pString: string) of object;
type TMeuEvento = procedure (Sender: TObject; pString: string) of object;
2º Essa procedure, como seria essa chamada q vc falou? essa procedure é a implementação da q vc declarou no type?
procedure DoMeuEvento(Sender: TObject; pString: string); virtual;
Me perdoe se são perguntas meio principiantes, é q nunca tinha criado componentes antes, to em fase de aprendizado.
Obrigado.
Gostei + 0
02/02/2006
Bruno Belchior
Gostei + 0
02/02/2006
Michael
Se vc está começando a estudar componentes, sugiro a leitura destes artigos, de minha autoria:
Parte I
https://www.devmedia.com.br/visualizacomponente.aspx?comp=1115&site=3
Parte II
https://www.devmedia.com.br/visualizacomponente.aspx?comp=1116&site=3
Acho que podem te ajudar. ;-)
[b:3d9677239b]Bruno[/b:3d9677239b], uma pequena correção: os métodos [b:3d9677239b]DoNomeEvento [/b:3d9677239b]devem ficar na seção [b:3d9677239b]protected [/b:3d9677239b]da classe do componente, e não na [b:3d9677239b]published[/b:3d9677239b]. O usuário do controle - outro programador que não seja o desenvolvedor do componente - não deveria ter acesso diretamente a ele. Aliás, na seção [b:3d9677239b]published [/b:3d9677239b]apenas devem constar propriedades que devem ser exibidas no Object Inspector, não métodos e campos.
Sei que vc sabe disse. Creio de tenha pensando em [b:3d9677239b]protected [/b:3d9677239b]e escreveu [b:3d9677239b]published[/b:3d9677239b]. ;-)
[]´s
Gostei + 0
02/02/2006
Bruno Belchior
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)