Delphi 2007 - Não consigo atulizar as imagens de 8 TImage´s
E ai galara... Blz!?!?! Preciso de uma ajuda ai. To desenvolvendo um visualizador de imagens que deve exibir 8 imagens ao mesmo tempo puxando do banco de dados (Firebird 2.1.1). Estou usando Delphi 2007. Coloquei 8 TImage´s e a cada clique do botão, deve passar para as próximas 8 imagens. A rotina que troca para as próximas imagens eu já fiz, mas quando eu chamo essa rotina a tela não atualiza. Fica com as imagens anteriores. Se eu minimizo a tela e maximizo novamente, as imagens aparecem corretamente. Já me falaram pra colocar Form.Repaint; Form.Refresh; Timage.Refresh; TImage.Repaint; etc, etc.... e nada de atualizar as imagens. Procurei em varios fóruns e não achei a solução. Se alguém puder me ajudar com o fonte ou me passar links que possam conter a respota, ficarei agradecido.
Ai vai o fonte:
Se precisarem de mais algumas informações sobre o programa é só pedir. Desde já agradeço a ajuda
Valeu....
Ai vai o fonte:
procedure TForm1.CarregaJPG(Image : TImage); // Procedimento que carrega imagens JPG no Delphi var BlobStream: TStream; JPEGImage: TJPEGImage; begin if AlbunsIMAGEM.BlobSize <> 0 then begin try BlobStream := Albuns.CreateBlobStream(AlbunsIMAGEM, bmRead); JPEGImage := TJPEGImage.Create; JPEGImage.LoadFromStream(BlobStream); Image.Picture.Assign(JPEGImage); Image.Visible := True; Image.Tag := AlbunsCOD_ALBUM.Value; except Image.Visible := False; end; BlobStream.Free; JPEGImage.Free; end else Image.Visible := False; end; procedure TForm1.JvBitmapButton1Click(Sender: TObject); //Clique do Botão "Next" begin AlimentaImagens(´N´); Form1.Update; Form1.Refresh; Form1.Repaint; end; procedure TForm1.AlimentaImagens(Rumo: Char); // Procedimento que alimenta os TImage´s var I: Integer; Imagem : TImage; begin if Rumo = ´N´ then // N = Next begin Albuns.Next; if not Albuns.Eof then begin for I := 1 to 8 do begin if not Albuns.Eof then CarregaJPG((FindComponent(´Image´ + IntToStr(I)) as TImage)) else (FindComponent(´Image´ + IntToStr(I)) as TImage).Visible := False; if i < 8 then Albuns.Next; end; end; end else if Rumo = ´B´ then begin if not Albuns.Bof then begin for I := 1 to 8 do Albuns.Prior; for I := 8 downto 1 do begin if not Albuns.Bof then CarregaJPG((FindComponent(´Image´ + IntToStr(I)) as TImage)); Albuns.Prior; end; end; end else if Rumo = ´A´ then begin Albuns.Close; Albuns.Open; Albuns.First; if Albuns.RecordCount > 0 then begin for I := 1 to 8 do begin if not Albuns.Eof then CarregaJPG((FindComponent(´Image´ + IntToStr(I)) as TImage)) else (FindComponent(´Image´ + IntToStr(I)) as TImage).Visible := False; if i < 8 then Albuns.Next; end; end; end; Application.ProcessMessages; end;
Se precisarem de mais algumas informações sobre o programa é só pedir. Desde já agradeço a ajuda
Valeu....
Karlusheidrich
Curtidas 0
Respostas
Afarias
06/10/2009
Estranho... mas tente isto, depois da linha:
Image.Picture.Assign(JPEGImage);
coloque:
Image.Invalidate;
T+
Image.Picture.Assign(JPEGImage);
coloque:
Image.Invalidate;
T+
GOSTEI 0