Timage1
13/05/2003
0
Como eu posso mim referir a uma image por uma variavel,
Tentei os exeplos abaixo mais da erro
Exemplo1:
var
nomedaimagem : string;
begin
nomedaimagem := ´image1´;
nomedaimagem.picture := image2.picture;
..
Exemplo2:
var
nomedaimagem : string;
...
nomedaimagem :=´image2´;
TImage(nomedaimagem).Picture := Image_matriz_marcado.picture;
OBS: No clipper eu conseguia passar uma valor como parametro
Muito Obrigado
Ricardo
Zlink
Posts
13/05/2003
Marcelo Saviski
TImage(findcomponent(string)).fazalgumacoisa;
13/05/2003
Neguta
aí:
var
BMP : TBitMap ;
begin
Bmp := TBitmap.Create;
Bmp.LoadFromFile(Arquivo);
ou
BMP.Assign(arquivo);
end;
--Anderson--
14/05/2003
Zlink
Mais não é bem isto que eu quero,
Não é abrir uma imagem do disco,
Eu quero é pode atribuir o nome de um Timage há uma variavel
Eu tenho varias imagens, image1,image2,image... image50
onde X = ´1´ ou ´2´ ou ´3´ ...
var
imagemtemp : string
begin
x=´1´
imagemtemp := imagemtemp+x; // imagemtemp = imagemtemp1
imagemtemp.picture := matriz.picture;
x=´2´
imagemtemp := imagemtemp+x; // imagemtemp = imagemtemp2
imagemtemp.picture := matriz.picture;
a intenção é
For X:=1 to 9 do begin
image+x.picture := matriz.picture;
ou
para não ter que fazer isto várias vezes em N imagens
image2.Picture := Image_matriz_marcado.picture;
image2.hint := ´marcado´;
image75.Picture := Image_matriz_marcado.picture;
image75.hint := ´marcado´;
ou seja
chamar uma imagem como parametro
...
Ok.
Como eu posso fazer
Obrigado
José Ricardo
14/05/2003
Okama
Var
I : Integer;
Begin
For I := 0 to ComponentCount - 1 do
IF Components[ I ] is TImage Then Begin
TImage(Components [ I ] ).Picture.LoadFromFile(´c:\a.bmp´);
end;
end;
14/05/2003
Zlink
Image_matriz_marcado.picture; // já exite uma image nesta
procedure TForm1.Image13Click(Sender: TObject);
image23.Picture := Image_matriz_zero.picture;
image23.hint := ´zero´;
image22.Picture := Image_matriz_zero.picture;
image22.hint := ´zero´;
TImage(Sender).Picture := Image_matriz_selecionado.picture;
TImage(Sender).hint := ´selecionado´;
procedure TForm1.Image12Click(Sender: TObject);
image22.Picture := Image_matriz_zero.picture;
image22.hint := ´zero´;
image21.Picture := Image_matriz_zero.picture;
image21.hint := ´zero´;
TImage(Sender).Picture := Image_matriz_selecionado.picture;
TImage(Sender).hint := ´selecionado´;
selecionado;conta;
eu quero otimizar o código +- assim:
procedure TForm1.Image13Click(Sender: TObject);
imagex.Picture := Image_matriz_zero.picture;
imagex.hint := ´zero´;
imagey.Picture := Image_matriz_zero.picture;
imagey.hint := ´zero´;
TImage(Sender).Picture := Image_matriz_selecionado.picture;
TImage(Sender).hint := ´selecionado´;
procedure TForm1.Image12Click(Sender: TObject);
imagex.Picture := Image_matriz_zero.picture;
imagex.hint := ´zero´;
imagey.Picture := Image_matriz_zero.picture;
imagey.hint := ´zero´;
TImage(Sender).Picture := Image_matriz_selecionado.picture;
TImage(Sender).hint := ´selecionado´;
selecionado;conta;
* onde imagex e imagey, foi atribuido
imagex:=image23
imagey:=image22
e assim por diante
Atenciosamente
José Ricardo
14/05/2003
Okama
Você tem 50 imagens e precisa alterar as propriedades delas e quer que seja feito de forma otimizada, porém existe um Image (Image_matriz_zero) que você não pode alterar. É isso??
procedure TForm1.Button1Click(Sender: TObject); Var I : Integer; Begin For I := 0 to ComponentCount - 1 do IF Components[ I ] is TImage Then If TImage(Components [ I ] ).Name <> ´Image_matriz_zero´ then begin TImage(Components [ I ] ).hint := ´zero´; TImage(Components [ I ] ).Picture := Image_matriz_zero.picture; end; end;
14/05/2003
Zlink
O que eu que fazer é:
x:=1;
...
imagex.picture := imagematriz; // onde imagex é image1
e fazer
x:=31;
...
imagex.picture := imagematriz; // onde imagex é image31
e assim por diante
Muito obrigado a todos
José Ricardo
14/05/2003
Th_moreira
Var
I : Integer;
Begin
For I := 0 to ComponentCount - 1 do
IF Components[ I ] is TImage Then Begin
TImage(Components [ I ] ).Picture.LoadFromFile(´c:\´ + IntToStr(i) + ´.bmp´);
end;
end;
14/05/2003
Marcelo Saviski
image : [b:ec356e1ddb]array[/b:ec356e1ddb] [0..0] [b:ec356e1ddb]of[/b:ec356e1ddb] timage;
[i:ec356e1ddb][color=blue:ec356e1ddb]// declare essa variavel como global[/color:ec356e1ddb][/i:ec356e1ddb]
[i:ec356e1ddb][color=blue:ec356e1ddb]//evento oncreate do form[/color:ec356e1ddb][/i:ec356e1ddb]
[b:ec356e1ddb]Var [/b:ec356e1ddb]
I,X : Integer;
[b:ec356e1ddb]Begin [/b:ec356e1ddb]
X := 0;
[b:ec356e1ddb]For[/b:ec356e1ddb] I := 0[b:ec356e1ddb] to [/b:ec356e1ddb]ComponentCount - 1 [b:ec356e1ddb]do if[/b:ec356e1ddb] Components[ I ][b:ec356e1ddb] is[/b:ec356e1ddb] TImage [b:ec356e1ddb]Then Begin [/b:ec356e1ddb]
image[x] := TImage(Components[i]);
inc(X);
setlength(image , length(image) + 1);
[b:ec356e1ddb]end;
end; [/b:ec356e1ddb]
[color=blue:ec356e1ddb]
//depois você se refere ao TImage assim[/color:ec356e1ddb]
numero := 33;
image[numero].picture.fazalgumacoisa;
[color=darkblue:ec356e1ddb][b:ec356e1ddb]Var[/b:ec356e1ddb]
image : [b:ec356e1ddb]array[/b:ec356e1ddb] [0..0] [b:ec356e1ddb]of[/b:ec356e1ddb] timage;
usamos um vetor para designar os componentes
imagex >> fica image[x]
[b:ec356e1ddb]For[/b:ec356e1ddb] I := 0[b:ec356e1ddb] to [/b:ec356e1ddb]ComponentCount - 1 [b:ec356e1ddb]do
´Passa´ por todos os componentes do formulario
if[/b:ec356e1ddb] Components[ I ][b:ec356e1ddb] is[/b:ec356e1ddb] TImage [b:ec356e1ddb]Then [/b:ec356e1ddb]
[b:ec356e1ddb]Se o componente for um TImage[/b:ec356e1ddb]
[b:ec356e1ddb]Begin [/b:ec356e1ddb]
image[x] := TImage(Components[i]);
[b:ec356e1ddb]referencia image[x] como sendo um a especie de ponteiro para o TImage[/b:ec356e1ddb]
inc(X);
setlength(image , length(image) + 1);
[b:ec356e1ddb]aumenta o tamanho do array em 1
ex : array [0..10] >> array [0..11][/b:ec356e1ddb]
[b:ec356e1ddb]end;
end; [/b:ec356e1ddb]
[/color:ec356e1ddb]
[color=orange:ec356e1ddb]
Espero ter ajudado[/color:ec356e1ddb]
19/05/2003
Zlink
tentei fazer o teste mais mostra um erro na linha:
setlength(image , length(image) + 1);
imcompatible types
Ricardo
19/05/2003
Marcelo Saviski
acho que você tem que declarar alguma unit no uses, ma snão me lembro qual, SysUtilis talvez.
ou senão, vc pode colocar o valor direto no array
veja quantas são os TImage que você tem no form, digamos 50, e coloque lá :
[b:8c5ebf58a3]Var [/b:8c5ebf58a3]
image : array [0..50] of timage;
e tire a linha do SetLength fora
Clique aqui para fazer login e interagir na Comunidade :)