GARANTIR DESCONTO

Fórum Evento on click em componente criado em tempo de execução #564484

23/10/2016

0

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!
Gustavo Oliveira

Gustavo Oliveira

Responder

Posts

24/10/2016

Robson Morais

Bom dia, duas formas

Botao.Glyph.LoadFromFile(caminho\\imagem.bmp);


ou colocar um imageList

Botao.Glyph := nil;
ImageList.GetBitmap(INDICE_DA_IMAGEM, Botao.Glyh);
Responder

Gostei + 0

24/10/2016

Gustavo Oliveira

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
Responder

Gostei + 0

24/10/2016

Robson Morais

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;
Responder

Gostei + 0

24/10/2016

Gustavo Oliveira

Ta dando um invalid Class Typecast aqui :/
Responder

Gostei + 0

24/10/2016

Gustavo Oliveira

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
Responder

Gostei + 0

24/10/2016

Robson Morais

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;

               // 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
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar