// Wenn man sich animierte Gifs anzeigen lassen will ohne eine
// GIF-Komponente zu verwenden, kann man den Internetexplorer(ab 4.0)
// dazu missbrauchen. Diese Art der Anzeige eignet sich z.B.
// für Vorschauen, wobei man noch eine Begrenzung der Breite und
// Höhe sowie eine Skalierung großer Bilder einfügen sollte.


// Getestet mit D4 unter WinME

uses OleCtnrs; 
 
OleContainer1: TOleContainer; 
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  OleContainer1 := TOleContainer.create(self); 
  OleContainer1.parent := self; 
  OleContainer1.left := 10; 
  OleContainer1.top := 10; 
  OleContainer1.visible := false; 
end; 
 
procedure abschalten; 
begin 
  with Form1 do begin 
    try 
      OleContainer1.visible := false; 
      OleContainer1.close; 
      OleContainer1.destroyobject; 
    except 
    end; 
  end; 
end; 
 
function Zeige_IE_GIF(bild: string): string; 
var 
  tf: TFilestream; 
  w, h: word; 
  a: array[0..2] of char; 
  f: string; 
begin 
  with Form1 do begin 
    if not fileexists(bild) then begin 
      result := 'Datei nicht gefunden'; 
      exit; 
    end; 
    try 
      f := inttohex(colortorgb(color), 6); // Kompromiss 
      tf := tfilestream.create(bild, fmopenread); 
      tf.readbuffer(a, 3); 
      tf.position := 6; 
      tf.readbuffer(w, sizeof(Word)); 
      tf.readbuffer(h, sizeof(Word)); 
      tf.free; 
      if a <> 'GIF' then begin 
        result := 'Sorry, kein GIF'; 
        exit; 
      end; 
      OleContainer1.CreateObject('Shell.Explorer', false); 
      OleContainer1.clientwidth := w; 
      OleContainer1.clientheight := h; 
      OleContainer1.visible := true; 
      OleContainer1.oleobject.navigate('about:<html>' + 
        '<body bgcolor="#' + f + '" topmargin="0" leftmargin="0" scroll="no">' + 
        '<img src="' + bild + '"></img></body></html>'); 
      OleContainer1.visible := true; 
      OleContainer1.DoVerb(ovshow); 
      result := 'OK'; 
    except 
      result := 'Es ist ein Fehler aufgetreten'; 
      abschalten; 
    end; 
  end; 
end; 
 
procedure TForm1.FormDestroy(Sender: TObject); 
begin 
  abschalten; 
end; 
 
 
// GIF anzeigen 
 
procedure TForm1.Button4Click(Sender: TObject); 
var s: string; 
begin 
  s := Zeige_IE_GIF('d:\gifs\dice.gif'); 
  if s <> 'OK' then showmessage(s); 
end; 
 
// Anzeige ausschalten 
 
procedure TForm1.Button5Click(Sender: TObject); 
begin 
  abschalten; 
end; 
 



Zugriffe seit 6.9.2001 auf Delphi-Ecke