Delphi 2007 - Não consigo atulizar as imagens de 8 TImage´s

Delphi

06/10/2009

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:

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

Karlusheidrich

Curtidas 0

Respostas

Afarias

Afarias

06/10/2009

Estranho... mas tente isto, depois da linha:

Image.Picture.Assign(JPEGImage);

coloque:

Image.Invalidate;



T+


GOSTEI 0
POSTAR