Componente receber função

Delphi

18/06/2012

Bom dia,

estou com a seguinte dúvida:

Se eu criar alguns botões dinamicamente, como faço para criar o OnClick dele?
Luiz Junior

Luiz Junior

Curtidas 0

Respostas

Marco Salles

Marco Salles

18/06/2012

simples

Vc tem que escrever uma procedure com os mesmo aprametros deste evento

depois atribuir o evento onclick deste botão a esta procedure

Tipo isto

SeuButton.OnClick:=ProcedureDefinidaPorVoce;


procedure ProcedureDefinidaPorVoce(Sender: TObject);
begin
Instruçoes utulize o Sender se necessitar
end;

GOSTEI 0
Luiz Junior

Luiz Junior

18/06/2012

Desculpa,

eu não detalhei bem a minha pergunta.

Na verdade eu queria é fazer o seguinte:

criar vários Panel, um embaixo do outro, exemplo:

Panels:
A
B
C
D

Quando eu der dois click em cada panel terá que aparecer uma mensagem A para o panel A, B para o panel B.

O que eu quero é poder identificar o compnente criado(Panel).
GOSTEI 0
Marco Salles

Marco Salles

18/06/2012

Sua dúvida pelo menos para mim continua confusa

Mas de nome a este panels criados dinamicamente e os ecesse com a propriedade findComponent do Proprietário
No caso deve ser o Formulario
GOSTEI 0
Luiz Junior

Luiz Junior

18/06/2012

Fiz da forma que vc falou e não deu certo, vou tentar explicar melhor!

Em um Form vou criar vários panels conforme o recordcount de clientedataset, digamos que no cliente tenha João, Maria e Paula.

Será criado 3 Panel um abaixo do outro

João

Maria

Paula

Quando eu der doi click no panel Maria, tem que mostrar digamos em um edit algum dado da maria e se eu der duplo clique no panel que tem paula tem que mostrar os dados de Paula.

Não sei como identificar que o duplo click em Maria tem que buscar os dados de maria, ele esta fazendo só o de paula.
GOSTEI 0
Gustavo Bretas

Gustavo Bretas

18/06/2012

Luiz Carlos, antes de responder sua pergunta, você conhece o componente TDBCtrlGrid da paleta Data Controls? Acho que pode fazer automáticamente o que vc quer, da pra colocar DBEdit nele, entre outros componentes!

No caso da criação dos Panels dinâmicamente, vc terá que vincular alguma informação para encontrar o registro no DataSet. No exemplo de cliente que vc postou, no evento que vc cria os Panels, coloque o código do cliente na propriedade Tag, crie uma procedure exatamente como no exemplo do Marco Antonio, dentro da procedure vc pode fazer como no exmplo abaixo.

  SeuDataSet.First;
  if SeuDataSet.Locate(COD_CLIENTE, TPanel(Sender).Tag, []) then
  begin
    ShowMessage(SeuDataSet.FieldByName(NOME_CLIENTE).AsString);
	// ou qualquer outra informação do DataSet
  end;

GOSTEI 0
POSTAR