ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Atribuir .onclick para criação em massa

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
rgtt1552
Novato
Novato


Registrado: Quarta-Feira, 30 de Outubro de 2019
Mensagens: 17

MensagemEnviada: Ter Nov 05, 2019 12:33 pm    Assunto: Atribuir .onclick para criação em massa Responder com Citação

Estou criando alguns Timages em massa, e gostaria de atribuir a cada um deles, um evento .onclick diferente. Gostaria que quando fosse clicado em algum deles, mostrasse uma mensagem salva em uma matriz. Como proceder?

O que tenho até agora é:
procedure TForm1.Button3Click(Sender: TObject);
Var
Contador : integer;
begin
Setlength(minhasimagens,6);
Setlength(meuslinks,6);
For Contador := 0 To 5 Do
Begin
MinhasImagens[Contador] := TImage.Create(Form1);
MinhasImagens[Contador].Name := 'image' + IntToStr(Contador);
MinhasImagens[Contador].Parent := Form1;
MinhasImagens[Contador].Top := ((Contador + 1) * 200);
MinhasImagens[Contador].Height := 200;
MinhasImagens[Contador].width := 350;
minhasimagens[contador].stretch:=true;
meuslinks[contador]:='ttt'+inttostr(contador);
minhasimagens[contador].onclick:=????
MinhasImagens[Contador].picture.loadfromfile('C:\Users\X\A.jpg');

End;
end;

end.
O link está sendo salvo na matriz MeusLinks[contador].
Lembrando que declarei o MeusImagens e MeusLinks lá em cima, no public.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Ter Nov 05, 2019 3:01 pm    Assunto: Responder com Citação

Crie uma procedure genérica para ser atribuída ao Onclick de cada TImage:

Declarando a procedure no Public:

Código:
public
    { Public declarations }
    meuslinks: array of string;
    minhasimagens: array of timage;
    procedure Mensagem(Sender: TObject); // procedure genérica
  end;


Criando a procedure:

Código:
procedure TForm1.Mensagem(Sender: TObject);
begin
   ShowMessage(meuslinks[TImage(Sender).Tag]);
end;


Código de criação das imagens:

Código:
var
  contador: Integer;
begin
  Setlength(minhasimagens, 6);
  Setlength(meuslinks, 6);

  For Contador := 0 To 5 Do
  Begin
    minhasimagens[Contador] := timage.Create(Self);
    minhasimagens[Contador].Name := 'image' + IntToStr(Contador);
    minhasimagens[Contador].Parent := Self;
    minhasimagens[Contador].Top := ((Contador + 1) * 200);
    minhasimagens[Contador].Height := 200;
    minhasimagens[Contador].width := 350;
    minhasimagens[Contador].stretch := true;
    meuslinks[Contador] := 'ttt' + IntToStr(Contador);
    minhasimagens[Contador].onclick := Mensagem;
    minhasimagens[Contador].Tag:= Contador;
    minhasimagens[Contador].picture.loadfromfile('C:\Users\X\A.jpg');
  End;
end;

_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
rgtt1552
Novato
Novato


Registrado: Quarta-Feira, 30 de Outubro de 2019
Mensagens: 17

MensagemEnviada: Ter Nov 05, 2019 5:04 pm    Assunto: Responder com Citação

Perfeito. Exatamente como eu preciso.

Só uma dúvida. Fui fazer um teste com uma quantidade maior de imagens e até uma certa quantidade, o delphi insere normal. O restante ele acaba inserindo tudo embolado no topo do form.

Teria uma opção de solucionar?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
rgtt1552
Novato
Novato


Registrado: Quarta-Feira, 30 de Outubro de 2019
Mensagens: 17

MensagemEnviada: Ter Nov 05, 2019 5:07 pm    Assunto: Responder com Citação

Esquece. Eu só havia setado a matriz que busca a posição de inserção das fotos como 35 e inseri uma quantidade maior de fotos.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB