Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
rgtt1552 Novato

Registrado: Quarta-Feira, 30 de Outubro de 2019 Mensagens: 17
|
Enviada: Ter Nov 05, 2019 12:33 pm Assunto: Atribuir .onclick para criação em massa |
|
|
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 |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Ter Nov 05, 2019 3:01 pm Assunto: |
|
|
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 |
|
 |
rgtt1552 Novato

Registrado: Quarta-Feira, 30 de Outubro de 2019 Mensagens: 17
|
Enviada: Ter Nov 05, 2019 5:04 pm Assunto: |
|
|
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 |
|
 |
rgtt1552 Novato

Registrado: Quarta-Feira, 30 de Outubro de 2019 Mensagens: 17
|
Enviada: Ter Nov 05, 2019 5:07 pm Assunto: |
|
|
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 |
|
 |
|