Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Screenshots erstellen (https://www.delphipraxis.net/214177-screenshots-erstellen.html)

Delphi.Narium 30. Nov 2023 02:39

AW: Screenshots erstellen
 
Die Methode GetFormImage liefert doch schon ein Bitmap, damit müsste eigentlich auch sowas gehen:
Delphi-Quellcode:
form1.GetFormImage.SaveToFile('c:\temp\' + Form1.Name + '.bmp');


Delphi-Quellcode:
for var i : Integer := 0 to Screen.FormCount - 1 do    Screen.Forms[i].GetFormImage.SaveToFile(Format('c:\temp\%s.bmp',[Screen.Forms[i].Name]));

himitsu 30. Nov 2023 02:50

AW: Screenshots erstellen
 
Free :roll:

https://docwiki.embarcadero.com/Code...Image_(Delphi)

Delphi.Narium 30. Nov 2023 08:25

AW: Screenshots erstellen
 
Heißt das, dass oben in meiner Routine mit dem
Delphi-Quellcode:
 FJpeg.Assign(fm.GetFormImage);
auch ein Speicherloch entsteht?

himitsu 30. Nov 2023 09:32

AW: Screenshots erstellen
 
Natürlich.

Delphi-Quellcode:
function TCustomForm.GetFormImage: TBitmap;
begin
  Result := TBitmap.Create;

Delphi.Narium 30. Nov 2023 10:11

AW: Screenshots erstellen
 
Mist, warum hat mich FastMM noch nie darauf hingewiesen?

Da muss dann noch mehr im Argen liegen :-(

So besser?
Delphi-Quellcode:
{ Bildschirmfoto eines Formulars machen und als JPeg speichern.               }
procedure HardCopy(sJpegFile : String; fm : TForm);
Var
  FJpeg : Jpeg.TJpegImage;
  FBmp : Graphics.TBitmap;
begin
  if SysUtils.FileExists(sJpegFile) then SysUtils.DeleteFile(sJpegFile);
  if (fm.WindowState = wsMinimized) then fm.WindowState := wsNormal;
  fm.Show;
  fm.Refresh;
  FJpeg := TJpegImage.Create;
  FBmp := fm.GetFormImage;
  try
    try
      FJpeg.Assign(FBmp);
      fJPeg.SaveToFile(sJpegFile);
    except
      on e : Exception do begin
        MessageDlg(e.Message,mtError,[mbOk],0);
      end;
    end;
  finally
    FBmp.Free;
    FJpeg.Free;
  end;
end;
Wenn nicht, sollte ich mir langsam aber sicher ein anderes Hobby suchen :-(

Amateurprofi 30. Nov 2023 22:57

AW: Screenshots erstellen
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1530256)
Nö, die Routine ist Teil einer Unit, die ich sowieso in jedes Programm mit einbinden muss, da sie durchaus noch weitere sinnvolle Aufgaben erledigt. (Gesamtes Laden und Speichern der konfigurierbaren Einstellungen, zentrale Fehlerbehandlung aller Fehler, die nicht vernünftig im Quelltext abgehandelt wurden, Aufruf des (programm)eigenen Hilfesystems (EPub-Format), ...)

Das sie auch die HardCopy-Routine enthält ist nur ein kleines Schmanckerl.

Wenn Du das auch so löst, dann kannst Du der Routine ja den ShortCut ALTGr+B geben. Damit muss Du im Arbeitsablauf dann nicht mal was ändern ;-)


Danke für Deine Mühe, Delphi.Narium,
kommt aber für mich nicht in Frage, weil
Erstens habe ich keine Unit, die ich in alle Projekte einbinde.
Zweitens will ich nicht immer eine Form aus einem aktuell laufenden Programm kopieren.
Drittens will ich nicht immer eine Form, sondern auch nur einzelne Controls kopieren.
etc.

Vor allem:
Ich habe doch ein perfekt auf meine Bedürfnisse zugeschnittenes Programm, das ich durch Shortcuts aufrufen kann, ohne vorher ein Programm zu starten.
Übrigens hatte ich früher in meine Programme etwas ähnliches integriert, zum Beispiel
https://www.delphipraxis.net/204883-...rgleichen.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:56 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz