Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.431 Beiträge
 
Delphi 7 Professional
 
#8

AW: Thumbnail-Preview: Screenshot von Hauptform anzeigen

  Alt 6. Jan 2019, 14:51
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.
  Mit Zitat antworten Zitat