Vom Formular?
Hat das nicht die Methode GetFormImage.
Für mein Hilfe brauche ich für alle Formulare ein JPG. Das mache ich so:
Delphi-Quellcode:
{ Bildschirmfoto eines Formulars machen und als JPeg speichern. }
procedure HardCopy(sJpegFile : String; fm : TForm);
Var
FStream : TStream;
FBmp : TPicture;
FJpeg : TJpegImage;
begin
if SysUtils.FileExists(sJpegFile) then SysUtils.DeleteFile(sJpegFile);
FStream := TFileStream.Create(sJpegFile,fmCreate);
fm.WindowState := wsNormal;
fm.Show;
fm.Refresh;
FJpeg := TJpegImage.Create;
FBmp := TPicture.Create;
try
FBmp.Bitmap.Assign(fm.GetFormImage);
FJpeg.Assign(FBmp.Bitmap);
FJpeg.SaveToStream(FStream);
finally
FStream.Free;
FJpeg.Free;
FBmp.Free;
end;
end;
// Im Timer dann ungefähr sowas:
procedure Tfrm_Main.tmr_ScreenshotTimer(Sender: TObject);
begin
if (Self.WindowState <> wsMinimized) and (gb_Hauptform_Aktiv) then begin
HardCopy(Format('%s.jpg',[Self.Name]), Self);
end;
end;
Das kann man dann bestimmt in etwa so anpassen:
Delphi-Quellcode:
procedure HardCopy(fm : TForm, bmp : TBitmap);
begin
fm.WindowState := wsNormal;
fm.Show;
fm.Refresh;
bmp.Assign(fm.GetFormImage);
end;
procedure Tfrm_Main.tmr_ScreenshotTimer(Sender: TObject);
begin
if (Self.WindowState <> wsMinimized) and (gb_Hauptform_Aktiv) then begin
HardCopy(Self, g_Bitmap_for_Thumbnail_Preview);
end;
end;
Noch einfacher erscheint mit allerdings:
Delphi-Quellcode:
procedure Tfrm_Main.tmr_ScreenshotTimer(Sender: TObject);
begin
if (WindowState <> wsMinimized) and (gb_Hauptform_Aktiv) then begin
Refresh;
g_Bitmap_for_Thumbnail_Preview.Assign(GetFormImage);
end;
end;
Keine Ahnung, was davon jetzt am sinnvollsten ist und für Dich die beste Funktionalität hat. Und da zum Teil hier im Editor hingedaddelt, keine Gewähr für Fehlerfreiheit.