git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.DevExpressVCL@31 05c56307-c608-d34a-929d-697000501d7a
144 lines
3.5 KiB
ObjectPascal
144 lines
3.5 KiB
ObjectPascal
unit dbtreeqr;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
Quickrpt, StdCtrls, ExtCtrls, DB, Qrctrls;
|
|
|
|
type
|
|
TQRListForm = class(TForm)
|
|
QuickReport: TQuickRep;
|
|
Title: TQRBand;
|
|
PageHeader: TQRBand;
|
|
PageNumber: TQRSysData;
|
|
Detail: TQRBand;
|
|
Image2: TImage;
|
|
QRLabel1: TQRLabel;
|
|
QText: TQRDBText;
|
|
Image: TQRImage;
|
|
ImageRect: TQRImage;
|
|
procedure QuickReportAfterPrint(Sender: TObject);
|
|
procedure QuickReportBeforePrint(Sender: TCustomQuickRep;
|
|
var PrintReport: Boolean);
|
|
procedure TitleAfterPrint(Sender: TQRCustomBand; BandPrinted: Boolean);
|
|
procedure TitleBeforePrint(Sender: TQRCustomBand;
|
|
var PrintBand: Boolean);
|
|
private
|
|
ShapeCount : Integer;
|
|
ShapeList : TList;
|
|
ImageLeft, QTextLeft, ImageRectLeft : Integer;
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
QRListForm: TQRListForm;
|
|
|
|
implementation
|
|
uses main;
|
|
|
|
const
|
|
PixelPerLevel = 50;
|
|
{$R *.DFM}
|
|
|
|
procedure HideQRShape(qs : TQRShape);
|
|
begin
|
|
with qs do begin
|
|
Visible := False;
|
|
Left := -100;
|
|
Width := 0;
|
|
Height := 0;
|
|
end;
|
|
end;
|
|
|
|
procedure TQRListForm.QuickReportAfterPrint(Sender: TObject);
|
|
Var
|
|
i : Integer;
|
|
begin
|
|
for i := 0 to ShapeCount do
|
|
TQRShape(ShapeList[i]).Free;
|
|
ShapeList.Free;
|
|
end;
|
|
|
|
procedure TQRListForm.QuickReportBeforePrint(Sender: TCustomQuickRep;
|
|
var PrintReport: Boolean);
|
|
Var
|
|
i : Integer;
|
|
begin
|
|
ShapeCount := FMain.DBTreePrintDataSet.MaxLevelCount;
|
|
ShapeList := TList.Create;
|
|
ImageLeft := Image.Left;
|
|
QTextLeft := QText.Left;
|
|
ImageRectLeft := ImageRect.Left;
|
|
for i := 0 to ShapeCount do begin
|
|
ShapeList.Add(TQRShape.Create(self));
|
|
with TQRShape(ShapeList[i]) do begin
|
|
Parent := Detail;
|
|
ParentReport := QuickReport;
|
|
if (i = 0) then
|
|
Shape := qrsHorLine
|
|
else Shape := qrsVertLine;
|
|
Pen.Style := psDot;
|
|
HideQRShape(TQRShape(ShapeList[i]));
|
|
end;
|
|
end;
|
|
|
|
end;
|
|
|
|
procedure TQRListForm.TitleAfterPrint(Sender: TQRCustomBand;
|
|
BandPrinted: Boolean);
|
|
Var
|
|
i : Integer;
|
|
begin
|
|
if (Sender <> Detail) then exit;
|
|
|
|
Image.Left := ImageLeft;
|
|
QText.Left := QTextLeft;
|
|
ImageRect.Left := ImageRectLeft;
|
|
if Not ImageRect.Visible then begin
|
|
ImageRect.Height := 9;
|
|
end;
|
|
ImageRect.Visible := True;
|
|
for i := 0 to ShapeCount do
|
|
HideQRShape(TQRShape(ShapeList[i]));
|
|
|
|
end;
|
|
|
|
procedure TQRListForm.TitleBeforePrint(Sender: TQRCustomBand;
|
|
var PrintBand: Boolean);
|
|
Var
|
|
i, Level, inten : Integer;
|
|
qs : TQRShape;
|
|
begin
|
|
if (Sender <> Detail) then exit;
|
|
Level := FMain.DBTreePrintDataSet.FindField('dx$level').AsInteger;
|
|
ImageRect.Visible := FMain.DBTreePrintDataSet.FindField('dx$haschildren').AsBoolean;
|
|
inten := Level * PixelPerLevel;
|
|
Image.Left := Image.Left + inten;
|
|
QText.Left := QText.Left + inten;
|
|
ImageRect.Left := ImageRect.Left + inten;
|
|
qs := TQRShape(ShapeList[0]);
|
|
qs.Visible := True;
|
|
if ImageRect.Visible then
|
|
qs.Left := ImageRect.Left + 1 + ImageRect.Width
|
|
else begin
|
|
qs.Left := ImageRect.Left + ImageRect.Width div 2 - PixelPerLevel;
|
|
ImageRect.Height := 1;
|
|
end;
|
|
|
|
qs.Width := Image.Left - qs.Left - 1;
|
|
qs.Top := ImageRect.Top + ImageRect.Height div 2;
|
|
|
|
for i := 0 to level - 1 do begin
|
|
qs := TQRShape(ShapeList[i + 1]);
|
|
qs.Visible := True;
|
|
qs.Left := ImageRectLeft + ImageRect.Width div 2 + i * PixelPerLevel;
|
|
qs.Height := Detail.Height;
|
|
end;
|
|
|
|
FMain.ImageList1.GetBitmap(0, Image.Picture.Bitmap);
|
|
end;
|
|
|
|
end.
|