Evento on click em componente criado em tempo de execução
Pessoal, boa tarde...
Eu preciso da ajuda de vocês pra resolver uma questão aqui... Como verão no print abaixo, eu tenho uma tela onde são criados alguns Panels em tempo de execução. Ate aí tudo tranquilo... Cada um deles recebe um nome, e todo o layout certinho.
O que preciso fazer é que ao clicar sobre um desses Panel, ele receba uma imagem de confirmação, para mostrar que aquela pessoa, daquele panel está selecionada...
Como faço isso?
Segue o link do print: [url]http://prnt.sc/cxzbgn[/url]
Valeu galera!
Eu preciso da ajuda de vocês pra resolver uma questão aqui... Como verão no print abaixo, eu tenho uma tela onde são criados alguns Panels em tempo de execução. Ate aí tudo tranquilo... Cada um deles recebe um nome, e todo o layout certinho.
O que preciso fazer é que ao clicar sobre um desses Panel, ele receba uma imagem de confirmação, para mostrar que aquela pessoa, daquele panel está selecionada...
Como faço isso?
Segue o link do print: [url]http://prnt.sc/cxzbgn[/url]
Valeu galera!
Gustavo Oliveira
Curtidas 0
Respostas
Robson Morais
23/10/2016
Bom dia, duas formas
ou colocar um imageList
Botao.Glyph.LoadFromFile(caminho\\imagem.bmp);
ou colocar um imageList
Botao.Glyph := nil; ImageList.GetBitmap(INDICE_DA_IMAGEM, Botao.Glyh);
GOSTEI 0
Gustavo Oliveira
23/10/2016
Entendi, mas dois problemas...
Não é um botao, e sim um panel que vai receber uma imagem;
E segundo, como vou identificar que quero a imagem no panel que estou clicando? Pq cada panel tem que ter seu próprio onclick!
Valeu já pela ajuda brother
Não é um botao, e sim um panel que vai receber uma imagem;
E segundo, como vou identificar que quero a imagem no panel que estou clicando? Pq cada panel tem que ter seu próprio onclick!
Valeu já pela ajuda brother
GOSTEI 0
Robson Morais
23/10/2016
então, se está usando o panel nativo do delphi ele não tem como colocar uma imagem nele, mas deve estar usando um image no panel, creio então que seria mais ou menos assim:
procedure TForm1.Image1Click(Sender: TObject);
var CONFIRMADO :String;
begin
if CONFIRMADO = 'SIM' then
begin
(Sender as TImage).Picture.LoadFromFile('c:\\imagens\\nao.png');
CONFIRMADO := 'NAO';
end
else
begin
(Sender as TImage).Picture.LoadFromFile('c:\\imagens\\sim.png');
CONFIRMADO := 'SIM';
end
end;GOSTEI 0
Gustavo Oliveira
23/10/2016
Ta dando um invalid Class Typecast aqui :/
GOSTEI 0
Gustavo Oliveira
23/10/2016
Amigo, acho que vou fazer de um jeito mais fácil aqui...
Acho que não expliquei bem o que quero né kkkk.... vamos la!
Eu tenho uma tela onde digito o código de uma pessoa... Por exemplo, 1313. Quando confirmo este código, ele verifica pra ver se o código está correto e na tela seguinte exibe todas as pessoas relacionadas àquela que digitou o código (esposa, marido, filho, pai...).
Até aqui tudo certo, foi simples de fazer. Agora eu tenho que, dentro das pessoas relacionadas que foram exibidas, selecionar quem está entrando junto com ele. Por isso criei vários panels, cada um se refere a um relacionado.
Mas pensei aqui em ao invés de criar uma imagem de confirmação, apenas mudar a cor do panel que eu clicar. Além disso preciso capturar algumas informações deste panel ao clicar sobre ele.
A dúvida cruel então é: Como faço para identificar que estou clicando sobre o panel1, por exemplo, mudo a cor dele e capturo informaçoes? Tentei chamar uma função onclick que mudava a cor do panel mas ele sempre muda a cor do último panel criado...
Deu pra entender? rs valeu
Acho que não expliquei bem o que quero né kkkk.... vamos la!
Eu tenho uma tela onde digito o código de uma pessoa... Por exemplo, 1313. Quando confirmo este código, ele verifica pra ver se o código está correto e na tela seguinte exibe todas as pessoas relacionadas àquela que digitou o código (esposa, marido, filho, pai...).
Até aqui tudo certo, foi simples de fazer. Agora eu tenho que, dentro das pessoas relacionadas que foram exibidas, selecionar quem está entrando junto com ele. Por isso criei vários panels, cada um se refere a um relacionado.
Mas pensei aqui em ao invés de criar uma imagem de confirmação, apenas mudar a cor do panel que eu clicar. Além disso preciso capturar algumas informações deste panel ao clicar sobre ele.
A dúvida cruel então é: Como faço para identificar que estou clicando sobre o panel1, por exemplo, mudo a cor dele e capturo informaçoes? Tentei chamar uma função onclick que mudava a cor do panel mas ele sempre muda a cor do último panel criado...
Deu pra entender? rs valeu
GOSTEI 0
Robson Morais
23/10/2016
Agora você explicou, uma vez montei tipo uma grid, mas com edit em tempo de execução, então para capturar tu tem que utilizar mais ou menos assim;
repare que no OnDblClick eu tenho uma função PreencheEdit;
então assim eu pego o nome:
Então para mudar a cor do seu panel clicado seria :
ou caso eles tenha um nome...
o que uso....para ter uma ideia
posta o código que você usa para criar os panels, caso não consiga
// cria o edit do codigo do aluno
tEdits := TTexto.Create( Self );
with tEdits do
begin
Cursor := crCross;
Parent := sbxPra;
Top := top_edit;
Left := left_edit;
Name := 'ed_' + IntToStr( a ) + FormatDateTime( 'hhnn', HoraAtual );
Width := 55;
//Enabled := False;
Text := '';
OnMouseMove:= MudarCursor;
Height := 23;
if PraticaLibera = true then
begin
ReadOnly := True;
OnDblClick := PreencheEdit;
OnKeyDown := BloqueioDesbloqueio;
end
else
if PraticaLibera = false then
begin
ReadOnly := true;
end;
// AutoSize := False;
with Font do
Begin
Name := 'Courier New';
Size := 8;
Style := [fsBold];
end;
end;repare que no OnDblClick eu tenho uma função PreencheEdit;
então assim eu pego o nome:
( Sender as TTexto ).Name
Então para mudar a cor do seu panel clicado seria :
( Sender as TPanel ).Color := clred;
ou caso eles tenha um nome...
o que uso....para ter uma ideia
TTexto( FindComponent( 'ed_' + IntToStr( nDia ) + FormatDateTime( 'hhnn', LeDados( 'Horario' ) ) ) ).Text
posta o código que você usa para criar os panels, caso não consiga
GOSTEI 0