Array
(
)

sender?

Fernando_cunha
   - 27 dez 2005

#Código

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


Michael
   - 27 dez 2005

Olá!

Sender 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


Fernando_cunha
   - 27 dez 2005

amigo,
poderia me dar um exemplo??
[]s


Michael
   - 27 dez 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 OnClick do primeiro botão, digitando o código a seguir:

#Código

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage((Sender as TButton).Caption);
end;


Depois associe aos outros dois botões o mesmo evento OnClick, clicando na aba Events do Object Inspector e selecionando na combobox Button1Click.

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 Tag, ou então uma comparação direta, tipo:

#Código
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 is antes de usar Sender, para poder fazer um typecast válido.

#Código
if Sender is TButton then... else if Sender is TEdit then...


[]´s


Martins
   - 27 dez 2005


Citação:
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 OnClick do primeiro botão, digitando o código a seguir:

#Código

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage((Sender as TButton).Caption);
end;


Depois associe aos outros dois botões o mesmo evento OnClick, clicando na aba Events do Object Inspector e selecionando na combobox Button1Click.

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 Tag, ou então uma comparação direta, tipo:

#Código
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 is antes de usar Sender, para poder fazer um typecast válido.

#Código
if Sender is TButton then... else if Sender is TEdit then...


[]´s

Bom exemplo sobre a utilização de Sender. Bem básico, muito bom