Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Screenshot von einem Memo (https://www.delphipraxis.net/42406-screenshot-von-einem-memo.html)

Dr.No 18. Mär 2005 12:16


Screenshot von einem Memo
 
Wie kann ich mit Delphi einen Screenshot von einem Objekt aif meiner form machen?
In meinem Fall ist es ein Memo.

Steve 18. Mär 2005 12:46

Re: Screenshot von einem Memo
 
Hi,


erstmal herzlich willkommen in der DP! :dp: :party:

Zur Frage: sowas in der Richtung könnte helfen:
Delphi-Quellcode:
TYPE
  TForm1 = CLASS(TForm)
  ...
  PRIVATE
  // Methode deklarieren
    FUNCTION ScreenshotControl(aControl : TControl; aFileName : String) : Boolean;
  END;
...

FUNCTION TForm1.ScreenshotControl(aControl : TControl; aFileName : String) : Boolean;
VAR
  bmp: TBitmap;
BEGIN
  Result := FALSE;
  IF Assigned(aControl) THEN
  TRY
    Bmp       := TBitmap.Create;
    Bmp.Width := aControl.Width;
    Bmp.Height := aControl.Height;
    Bmp.Canvas.CopyRect(Rect(0,0,Bmp.Width,Bmp.Height),
                        Canvas,aControl.BoundsRect); // "Canvas" = Self.Canvas
    Bmp.SaveToFile(aFileName);
    Result := TRUE;
  FINALLY
    FreeAndNil(Bmp);
  END;
END;

{ Aufruf }
IF ScreenShotControl(Memo1,'D:\Test.bmp') Then ShowMessage('Hat geklappt!');
Das Ganze kann natürlich nach Belieben um- oder ausgebaut werden...
Was da passiert braucht vermtulich nicht weiter kommentiert werden :)

Gruß
Stephan :dance:

[edit]Tippfehler ausgebssert etc.[/edit]

Dr.No 18. Mär 2005 15:47

Re: Screenshot von einem Memo
 
Danke, tut aber immer noch nicht!
Das memo speichert es zwar, aber die schridt nicht!
Weis Jemand noch was?

Pr0g 18. Mär 2005 15:52

Re: Screenshot von einem Memo
 
Hast du was an dem Code geändert? Bei mir gehts mit Schrift.

MfG Pr0g

Dr.No 18. Mär 2005 16:03

Re: Screenshot von einem Memo
 
nee, eigentlich nicht, aber ich hab in den aufruf mit nem savedialog gemacht,
aber daran kanns nich liegen, oder?

Pr0g 18. Mär 2005 16:06

Re: Screenshot von einem Memo
 
Eigentlich nicht, zeig den Code des Aufrufs aber trotzdem mal.

Dr.No 18. Mär 2005 16:07

Re: Screenshot von einem Memo
 
liegt doch an dem savedialog!
aber warum?

Pr0g 18. Mär 2005 16:08

Re: Screenshot von einem Memo
 
Zitat:

Zitat von Dr.No
aber warum?

Ich sagte doch, dass du mal den Code zeigen sollst, wie du den Opendialg öffnest und dann das Bild mit dem Dateinamen speicherst.

Edit: Es könnte sein, dass der OpenDialog über dem Memo liegt und daher das Canvas den Text nicht anzeigt. Du speichert also, bevor das Memo nach dem Schließen des Opendialgs neu zeichnet. Könnte das bei dir hinkommen?

Dr.No 18. Mär 2005 16:15

Re: Screenshot von einem Memo
 
einfach nur:
if savedialog1.execute then
ScreenShotControl(Memo1,savedialog1.filename)

Jens Schumann 18. Mär 2005 17:18

Re: Screenshot von einem Memo
 
Hallo,
haben für solche Zwecke nicht alle visuellen Komponenten die PaintTo Methode :gruebel:

Steve 21. Mär 2005 07:41

Re: Screenshot von einem Memo
 
Zitat:

Zitat von Dr.No
einfach nur:
if savedialog1.execute then
ScreenShotControl(Memo1,savedialog1.filename)

Mach daraus mal
Delphi-Quellcode:
if savedialog1.execute then
begin
  Application.ProcessMessages;
  ScreenShotControl(Memo1,savedialog1.filename);
end;
Begründung siehe Edit von Pr0g ;)

:arrow: Das mit Delphi-Referenz durchsuchenPaintTo kann natürlich auch sein, daran hab ich gar nicht gedacht :oops:

Gruß
Sephan :dance:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:29 Uhr.

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-2025 by Thomas Breitkreuz