![]() |
Datenbank: ABS • Version: 488 • Zugriff über: Datascore
TDBGrid auch ohne Report aus drucken?
Ist es möglich ein TDBGrid auch ohne einen Report aus zu drucken? Hat das schonmal Einer gemacht und Erfahrungen gesammelt.
|
Re: TDBGrid auch ohne Report aus drucken?
Hat Keiner einen Tipp oder Hinweis.
|
Re: TDBGrid auch ohne Report aus drucken?
Hallo Heike,
solange du keine besonderen Anforderungen an das Layout stellst, kannst du deine Daten natürlich auch direkt auf den Drucker rausschreiben (z.B. Font Courier New, Textfelder fester Länge). Sobald du mehr willst wird es ohne Report schnell sehr aufwändig. Grüße vom marabu |
Re: TDBGrid auch ohne Report aus drucken?
Hi Heike,
Wier ein Beispiel wie marabu schon gesagt hat, primitiv aber geht:
Delphi-Quellcode:
und nun noch einen Button:
unit UDruck;
interface procedure printText(name:string); implementation uses Printers, Dialogs, Sysutils, Graphics, Windows, Unit1; Var Breite,Hoehe: Word; y: Integer=0; s:String; j:Integer; Const oRand=10; uRand=10; lRand=15; dz=4; Procedure printTitle(name:string); Var m:Word; begin with Printer.Canvas do begin Font.Height:=3*10; Font.Style:=[fsbold]; m:=(breite*10-Textwidth(name)) div 2; TextOut(m,y*10,name); Font.Height:=3*10; Font.Style:=[]; end; Dec(y,10); end; procedure ausgabeZeile( s: string); Begin SetTextAlign(Printer.Handle,TA_LEFT+TA_TOP); Printer.Canvas.TextOut(lRand*10,y*10,s); Dec(y,dz); end; procedure PrintText(name:string); Var i:Word; procedure SeitenNr; Begin y:= -(hoehe-15); SetTextAlign(Printer.Handle,TA_RIGHT+TA_TOP); Printer.Canvas.TextOut(lRand*10+(Breite-55)*10, y*10,'Seite '+IntToStr(Printer.PageNumber)); end; begin with Printer do begin Orientation:=poPortrait; BeginDoc; SetMapMode(Handle,MM_LOMETRIC); breite:=GetDeviceCaps(Handle,HorzSize); hoehe:=GetDeviceCaps(Handle,VertSize); y:= -oRand; printTitle(name); if DBGrid1.SelectedRows.Count>0 then with DBGrid1.DataSource.DataSet do for i:=0 to DBGrid1.SelectedRows.Count-1 do Begin for j := 0 to FieldCount-1 do begin if (j>0) then s:=s+', '; s:=s+Fields[j].AsString; end; ausgabeZeile(s); If y< -(hoehe-uRand) then Begin // break; SeitenNr; NewPage; y:= -oRand; SetMapMode(Handle,MM_LOMETRIC); printTitle(name); end; end; SeitenNr; EndDoc; end; end; end.
Delphi-Quellcode:
es wird der markierte Teil des DBGrid gedruckt.
uses udruck;
... procedure TForm1.Button1Click(Sender: TObject); begin if Printdialog1.Execute then begin printText('Ausdruck DBGRID'); end; end; |
Re: TDBGrid auch ohne Report aus drucken?
Vielen Dank an Euch beiden, dass reicht voll und Ganz.
|
Re: TDBGrid auch ohne Report aus drucken?
Zitat:
Delphi-Quellcode:
Das sieht dann aus wie eine Hardcopy.
...
uses printers; ... printer.begindoc; printer.canvas.copyrect(...) // hier das Canvas vom TDBGrid kopieren printer.enddoc; ... Das Grid ist genau so zu sehen wie auf dem Bildschirm. (Also auch nur die angezeigten Datensätze (angezeigte Zeilen und Spalten) Ich hoffe diese Info hilft Euch. ps: Es gibt von ![]() Das macht genau das. Es sind unter anderem Links für RichEdit, StringGrid, DrawGrid, ListBox, ListView, ShellListView, TreeView, ShellTreeView, TeeChart, GenericContainer such as TForm, TFrame, TPanel vorhanden |
Re: TDBGrid auch ohne Report aus drucken?
Hallo BrunoT!
Das Ding wird im Projekt aufgenommen und kommt doch in den Uses und dann sollte es drucken, oder? bei mir kommt immer eine Fehlermeldung: unbekannter Bezeichner DBGrit1, obwohl er vorhanden ist? Heike. |
Re: TDBGrid auch ohne Report aus drucken?
Hi Heike,
Dein DBGrid steht auf Form1, die die Unit Udruck unter Impementation mit uses aufruft. In der Unit Udruck muss natürlich auch der Verweis auf Form1 vorhanden sein. Sorry leider habe ich vergessen:
Delphi-Quellcode:
With Form1 do if DBGrid1.SelectedRows.Count>0 then with DBGrid1.DataSource.DataSet do for i:=0 to DBGrid1.SelectedRows.Count-1 do Begin for j := 0 to FieldCount-1 do begin if (j>0) then s:=s+', '; s:=s+Fields[j].AsString; end; ausgabeZeile(s); If y< -(hoehe-uRand) then Begin // break; SeitenNr; NewPage; y:= -oRand; SetMapMode(Handle,MM_LOMETRIC); printTitle(name); end; end; |
Re: TDBGrid auch ohne Report aus drucken?
Zitat:
|
Re: TDBGrid auch ohne Report aus drucken?
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Heike,
noch mal laaangsaaam: 1. Du hast ´ne Form1 mit DbGrid, und die Daten sind zu sehen? Ja, gut 2. Für mein Beispiel: Options RowSelect=True, MuliSelect = True 3. Unter
Delphi-Quellcode:
4. Button mit
IMPLEMENTATION
uses UDruck;
Delphi-Quellcode:
5.In der Unit Udruck muß vor der Verwendung von DBGrid(nicht DBGrit) with Form1 do
if Printdialog1.Execute then
begin printText('Ausdruck DBGRID'); end;
Delphi-Quellcode:
stehen
with Form1 do //noch einzusetzen
with DBGrid1.DataSource.DataSet do //steht schon da for i:=0 to DBGrid1.DataSource.DataSet.RecordCount-1 do //steht schon da 6.automatisch wird dann Unit1
Delphi-Quellcode:
eingefügt
uses Printers, Dialogs, Sysutils, Graphics, Windows, Unit1;
ich habe das mal als Beispielprojekt zusammengestellt. Ich hoffe, das hilft |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:40 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