sender?
27/12/2005
0
unit UDataModule; interface uses SysUtils, Classes, DB, ADODB; type TDm = class(TDataModule) function Conectar() : boolean; procedure DataModuleCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Dm: TDm; implementation {$R *.dfm} procedure TDm.DataModuleCreate(Sender: TObject); begin end; end.
na procedure datamodulecreate o que significa o parametro sender???
como aplico isso em outras funcoes e procedures???
[]s
Fernando_cunha
Curtir tópico
+ 0
Responder
Post mais votado
27/12/2005
Inicie uma nova aplicação (no Delphi 2005, Delphi for Win32). Coloque três TButton no form, e mude seus Captions para ´Botão 1´, ´Botão 2´ e ´Botão 3´, respectivamente.
Implemente o evento [b:8bfc797193]OnClick [/b:8bfc797193]do primeiro botão, digitando o código a seguir:
Depois associe aos outros dois botões o mesmo evento [b:8bfc797193]OnClick[/b:8bfc797193], clicando na aba [b:8bfc797193]Events [/b:8bfc797193]do [b:8bfc797193]Object Inspector[/b:8bfc797193] e selecionando na combobox [b:8bfc797193]Button1Click[/b:8bfc797193].
Teste a aplicação e veja que vc tem o mesmo manipulador de evento para os três botões, e ele reage a cada botão individualmente.
Se vc precisar verificar se Sender é um objeto específico, pode usar a propriedade [b:8bfc797193]Tag[/b:8bfc797193], ou então uma comparação direta, tipo:
Se vc for atribuir o mesmo manipulador de evento para objetos de tipos diferentes, então vc deve verificar com o operador [b:8bfc797193]is[/b:8bfc797193] antes de usar [b:8bfc797193]Sender[/b:8bfc797193], para poder fazer um typecast válido.
[]´s
Implemente o evento [b:8bfc797193]OnClick [/b:8bfc797193]do primeiro botão, digitando o código a seguir:
procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage((Sender as TButton).Caption); end;
Depois associe aos outros dois botões o mesmo evento [b:8bfc797193]OnClick[/b:8bfc797193], clicando na aba [b:8bfc797193]Events [/b:8bfc797193]do [b:8bfc797193]Object Inspector[/b:8bfc797193] e selecionando na combobox [b:8bfc797193]Button1Click[/b:8bfc797193].
Teste a aplicação e veja que vc tem o mesmo manipulador de evento para os três botões, e ele reage a cada botão individualmente.
Se vc precisar verificar se Sender é um objeto específico, pode usar a propriedade [b:8bfc797193]Tag[/b:8bfc797193], ou então uma comparação direta, tipo:
if Sender = TButton1 then ...
Se vc for atribuir o mesmo manipulador de evento para objetos de tipos diferentes, então vc deve verificar com o operador [b:8bfc797193]is[/b:8bfc797193] antes de usar [b:8bfc797193]Sender[/b:8bfc797193], para poder fazer um typecast válido.
if Sender is TButton then... else if Sender is TEdit then...
[]´s
Michael
Responder
Mais Posts
27/12/2005
Michael
Olá!
[b:3c2c64b057]Sender [/b:3c2c64b057]aparece em quase todos os eventos na VCL. Ele indica o componente que disparou o evento. Como é do tipo TObject, vc pode fazer um typecast para qualquer outra classe existente. Vc pode ter vários botões, por exemplo, associados ao mesmo evento OnClick, e pelo parâmetro Sender saber qual deles foi clicado.
[]´s
[b:3c2c64b057]Sender [/b:3c2c64b057]aparece em quase todos os eventos na VCL. Ele indica o componente que disparou o evento. Como é do tipo TObject, vc pode fazer um typecast para qualquer outra classe existente. Vc pode ter vários botões, por exemplo, associados ao mesmo evento OnClick, e pelo parâmetro Sender saber qual deles foi clicado.
[]´s
Responder
27/12/2005
Martins
Inicie uma nova aplicação (no Delphi 2005, Delphi for Win32). Coloque três TButton no form, e mude seus Captions para ´Botão 1´, ´Botão 2´ e ´Botão 3´, respectivamente.
Implemente o evento [b:d93df16c5a]OnClick [/b:d93df16c5a]do primeiro botão, digitando o código a seguir:
Depois associe aos outros dois botões o mesmo evento [b:d93df16c5a]OnClick[/b:d93df16c5a], clicando na aba [b:d93df16c5a]Events [/b:d93df16c5a]do [b:d93df16c5a]Object Inspector[/b:d93df16c5a] e selecionando na combobox [b:d93df16c5a]Button1Click[/b:d93df16c5a].
Teste a aplicação e veja que vc tem o mesmo manipulador de evento para os três botões, e ele reage a cada botão individualmente.
Se vc precisar verificar se Sender é um objeto específico, pode usar a propriedade [b:d93df16c5a]Tag[/b:d93df16c5a], ou então uma comparação direta, tipo:
Se vc for atribuir o mesmo manipulador de evento para objetos de tipos diferentes, então vc deve verificar com o operador [b:d93df16c5a]is[/b:d93df16c5a] antes de usar [b:d93df16c5a]Sender[/b:d93df16c5a], para poder fazer um typecast válido.
[]´s
procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage((Sender as TButton).Caption); end;
if Sender = TButton1 then ...
if Sender is TButton then... else if Sender is TEdit then...
Bom exemplo sobre a utilização de [b:d93df16c5a]Sender[/b:d93df16c5a]. Bem básico, muito bom
Responder
Clique aqui para fazer login e interagir na Comunidade :)