Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Geison Risso

Como executar um comando contido em uma variavel

Recommended Posts

Galera, estou com um problemão...

 

Tenho uma tela com 1500 imagens nela, dispostas em 30 linhas com 50 colunas. De acordo com resultado de uma seleção no banco preciso trocar algumas propriedades das imagens.

Exemplo: O banco me retorno a seguinte: QtdCol = 2 QtdLin = 2 , nesse caso preciso trocar a propriedade visible false para true das 4 imagens. Minha duvida é, como fazer pra referenciar a imagens dinamicamente tipo Imagem(posicao viriavel).visible := true; ou executar um comando contido em uma variavel sem dar erro no compilador?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite Geisson Risso.

 

Voce pode utilizar um array bidimensional de componentes TImage e referenciar a sua posição através dos seus índices, declarando o array da seguinte forma:

 

type TForm1 = class(TForm)
  private 
	  { Private declarations }
	   Imagens: Array[1..30,1..50] of TImage;
  public
	  { Public declarations }
  end;

Como criá-los dinamicamente ? Assim oh.

 

var L, C, PX, PY: Integer;
begin
	 PX := 50;
	 PY := 50;
	 for L := 1 to 30 do
	 begin
		  for C := 1 to 50 do 
		  begin
			  Imagens[L,C] := TImage.Create(Self);
			  Imagens[L,C].SetBounds(PX, PY, 200, 200);
			  Imagens[L,C].Parent := Self;
			  Inc(PX, Imagens[L,C].Width + 5);
		  end;
		  Inc(PY, Imagens[L,1].Height + 5);
		  PX := 50;
	 end;	
end;

Valendo lembrar que a propriedade SetBounds(aLeft, aTop, aWidth, aHeight), configura de uma vez só as propriedades Left, Top, Width e Height, onde 200, 200 correspondem a comprimento (Width) e altura (Height) dos TImages.

 

Voce pode referenciar a posição de cada componente através dos seus índices assim:

 

Imagens[25,40].Visible := False;

Onde a Imagem da linha 25 e coluna 40 fica invisível.

 

Agora o que voce disse que o que vem do banco não é a posição das imagens na tela, mas sim a quantidade de imagens, sinceramente isto eu não entendi direito, porque isto se torna muito relativo, pois QtdLin = 2 e QtdCol = 2 pode significar quatro imagens na tela, porém em que coordenadas ?

 

Lembre-se, são 30 linhas que podem ser QtdLin = 2 podem significar Linha 1 e 2, 1 e 3........29 e 30 e QtdCol podem significar Colunas 27 e 30.......49 e 50, o seja, N possibilidades.

 

Um abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.