Componente receber função
Bom dia,
estou com a seguinte dúvida:
Se eu criar alguns botões dinamicamente, como faço para criar o OnClick dele?
estou com a seguinte dúvida:
Se eu criar alguns botões dinamicamente, como faço para criar o OnClick dele?
Luiz Junior
Curtidas 0
Respostas
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;
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
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).
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
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
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
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.
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
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.
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