![]() |
StringGrid--->QuickReport
ich habe mir mal ne kleine methode zusammengebastelt (anhand der quickreportdemo von delphi 7) mit der ich ein stringgrid in einer druckvorschau anzeigen lassen kann.
die ausgabe auf dem bildschirm sieht auch wunderbar aus bei mir, nur das druckergebnis lässt ein wenig zu wünschen übrig: die ersten 3 zellenköpfe fehlen und ab der 8. spalte sind die spaltenköpfe verwischt. liegt das an meinen drucker? (wohl kaum) oder ist es einfach nur zu früh und ich gehöre ins bett? :gruebel: hat jemand vielleicht einen besseren vorschlag wie man ein stringgrid in einer druckvorschau anzeigen kann?
Code:
unit QR1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, QuickRpt, QRCtrls, Grids, QRPrntr; type TQrForm1 = class(TForm) QuickRep1: TQuickRep; DetailBand1: TQRBand; procedure QuickRep1NeedData(Sender: TObject; var MoreData: Boolean); procedure QuickRep1BeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); private { Private-Deklarationen } zuDruckendesGrid: TStringGrid; iZeileNr: Integer; public { Public-Deklarationen } procedure initialise(aGrid: TStringGrid); end; var QrForm1: TQrForm1; implementation {$R *.dfm} uses Konstanten; procedure TQrForm1.initialise(aGrid: TStringGrid); var i, pos: Integer; aQrLabel: TQrLabel; aQrShape: TQrShape; begin zuDruckendesGrid := aGrid; pos := 0; for i:=0 to zuDruckendesGrid.ColCount-1 do begin aQrShape := TQrShape.Create(DetailBand1); aQrShape.Name := 'QrShape' + IntToStr(i); aQrShape.Parent := DetailBand1; aQrShape.Width := zuDruckendesGrid.ColWidths[i]; aQrShape.Left := pos; aQrShape.Height := zuDruckendesGrid.RowHeights[i]; aQrLabel := TQrLabel.Create(DetailBand1); aQrLabel.Name := 'QrLabel' + IntToStr(i); aQRLabel.Parent := DetailBand1; aQRLabel.Top := aQrShape.Top+2; aQRLabel.Width := aQrShape.Width-2; aQRLabel.Height := aQrShape.Height-5; aQRLabel.Left := pos+2; //aQrLabel.Transparent := true; pos := pos + aQRLabel.Width; end; DetailBand1.Height := aQrShape.Height; end; // diese Methode wird immer aufgerufen wenn die nächste Zeile gedruckt werden soll // Aufruf dieser Methode erfolgt durch QrForm1.QuickRep1.Preview; // es werden alle Cols/ Spalten durchgegangen von links nach rechts und dabei // werden alle zugehörigen Zeilen dieser Spalte gedruckt procedure TQrForm1.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean); var i: Integer; begin MoreData := iZeileNr < zuDruckendesGrid.RowCount; if MoreData then begin for i:=0 to zuDruckendesGrid.ColCount-1 do begin try if iZeileNr=0 then begin TQrShape(DetailBand1.FindComponent('QrShape' + IntToStr(i))).Brush.Color := clBtnFace; TQRLabel(DetailBand1.FindComponent('QrLabel' + IntToStr(i))).Color := clBtnFace; //TQRLabel(DetailBand1.FindComponent('QrLabel' + IntToStr(i))).Font.Style := [fsBold]; //TQRLabel(DetailBand1.FindComponent('QrLabel' + IntToStr(i))).Alignment := taCenter; //TQRLabel(DetailBand1.FindComponent('QrLabel' + IntToStr(i))). end else begin TQrShape(DetailBand1.FindComponent('QrShape' + IntToStr(i))).Brush.Color := clWhite; TQRLabel(DetailBand1.FindComponent('QrLabel' + IntToStr(i))).Color := clWhite; TQRLabel(DetailBand1.FindComponent('QrLabel' + IntToStr(i))).Font.Style := []; end; TQRLabel(DetailBand1.FindComponent('QrLabel' + IntToStr(i))).Caption := zuDruckendesGrid.Cols[i][iZeileNr]; except WriteToLogFile( 'Komponente ' + 'QrLabel' + IntToStr(i) + ' konnte '+ 'nicht gefunden werden. Reporterstellung wurde abgebrochen.'); end; end; end; Inc(iZeileNr); end; procedure TQrForm1.QuickRep1BeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); begin iZeileNr := 0; end; end. |
Re: StringGrid--->QuickReport
jemand hatte im forum von delphi-source.de den hinweis gegeben dass man die stringgridlinien auch allein mit den qrabel hinbekommt.
weiß wer wie? |
Re: StringGrid--->QuickReport
wirklich niemand? :gruebel:
|
Re: StringGrid--->QuickReport
bei dem QRLabel gibts die Eigenschaft Frame. Die sollte dir helfen
Gruß angos |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 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