Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TDrawGrid als Bitmap speichern (https://www.delphipraxis.net/38339-tdrawgrid-als-bitmap-speichern.html)

hoef 17. Jan 2005 22:50


TDrawGrid als Bitmap speichern
 
Hallo mal,
Verzweifelt suche ich mal wieder eure Hilfe. Ich versuche schon seit einiger Zeit eine TDrawGrid in die Zwischenablage zu kopieren (also ne Art Screenshot), bzw. Die TDrawGrid als BMP zu speichern.

Freue mich für jede Anregung...

Danke im Voraus :wall:

omata 18. Jan 2005 18:33

Re: TDrawGrid als Bitmap speichern
 
Moin,

schau dir mal folgendes an...

Delphi-Quellcode:
procedure DrawGridToClipboard(DrawGrid: TDrawGrid);
var Bitmap: TBitMap;
    i, Hoehe, Breite:integer;
begin
  Bitmap:=TBitmap.Create;
  try
    Bitmap.HandleType:=bmDIB;
    Hoehe:=0;
    for i:=1 to DrawGrid1.RowCount do
      Hoehe:=Hoehe + DrawGrid.RowHeights[i-1] + DrawGrid.GridLineWidth;
    Breite:=0;
    for i:=1 to DrawGrid.ColCount do
      Breite:=Breite + DrawGrid.ColWidths[i-1] + DrawGrid.GridLineWidth;
    Bitmap.Width:=Breite;
    Bitmap.Height:=Hoehe;
    BitBlt(Bitmap.Canvas.Handle, 0, 0, breite, hoehe,
           DrawGrid.Canvas.Handle, 0, 0, cmSrcCopy);
    Clipboard.Assign(Bitmap);
  finally
    Bitmap.free;
  end;
end;
MfG
Thorsten

hoef 18. Jan 2005 21:12

Re: TDrawGrid als Bitmap speichern
 
Tausend Dank, funktioniert einwandfrei :-D :drunken: . Ich hab jetzt nur noch eine unwissende Frage: Wo kann ich mich über das 'Handle' schlau machen. daran scheiterte meine Funktion wieder einmal :angel2: .

omata 18. Jan 2005 21:32

Re: TDrawGrid als Bitmap speichern
 
Moin,

das verstehe ich jetzt nicht. Es funktioniert einwandfrei, was geht dann nicht?
Welches Handle meinst du? (es gibt zwei in der Prozedur)

Fragen über Fragen

MfG
Thorsten

hoef 18. Jan 2005 22:24

Re: TDrawGrid als Bitmap speichern
 
Sorry, war jetzt etwas unverständlich. Der Code funktioniert wie nach Wunsch. Ich kam auf die Frage (Handle) da du Bitmap.HandleType benutzest. Ich komme nicht ganz hinter die property Handle, also was da genau geschieht und wann ich Handle-Property oder Befehle genau benutze.

Sorry für die Mühe :cyclops:

omata 18. Jan 2005 23:35

Re: TDrawGrid als Bitmap speichern
 
Also,

das Handle ist nur eine Zahl, die den Zugriff auf das Objekt erlaubt. Hinter dieser Zahl verbirgt sich einfach der Strukturlosezugriff auf Elemente (meisst grafische Flächen, aber auch bei Dateien wird dieses Konzept benutzt, und andere...)

Dadurch konnte die BitBlt-Prozedur ganz allgemein definiert werden und sie kann so auf verschiedenen Komponenten arbeiten.

MfG
Thorsten


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:56 Uhr.

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