
10.06.2010, 10:42
|
 |
Прохожий
|
|
Регистрация: 11.05.2010
Сообщения: 23
Репутация: 10
|
|
через Quickreport.
Код:
var
GridReport: TGridReport;
implementation
{$R *.dfm}
procedure TGridReport.Preview(Grid:TDBGrid);
var
i, CurrentLeft, CurrentTop : integer;
BMark:TBookmark;
begin
// GridRep.Page.Length:=420;
// GridRep.Page.Width:=297;
// GridRep.Page.PaperSize:=A3;
// GridRep.Page.Orientation:=poLandscape;
GridRep.Dataset:=Grid.DataSource.DataSet;
//Заголовок отчета
// if not GridRep.Bands.HasDetail then
GridRep.Bands.HasTitle:=true;
GridRep.Bands.TitleBand.Height:=150;
with TQRLabel.Create(GridRep.Bands.TitleBand) do
begin
Parent := GridRep.Bands.TitleBand;
Left := 7;
Top := 7;
Color:=$00ADADAD;
Font.Size:=55;
Caption:='Заголовок отчета. ';
end;
//Этот текст будет отображаться вначале каждой страницы
// if not GridRep.Bands.HasDetail then
GridRep.Bands.HasPageHeader:=true;
GridRep.Bands.PageHeaderBand.Height:=100;
with TQRLabel.Create(GridRep.Bands.PageHeaderBand) do
begin
Parent := GridRep.Bands.PageHeaderBand;
Left := 7;
Top := 7;
Font.Size:=16;
Caption:='Этот текст будет отображаться вначале каждой страницы...';
end;
//Этот текст будет отображаться в конце каждой страницы
// if not GridRep.Bands.HasDetail then
GridRep.Bands.HasPageFooter:=true;
GridRep.Bands.PageFooterBand.Height:=100;
with TQRLabel.Create(GridRep.Bands.PageFooterBand) do
begin
Parent := GridRep.Bands.PageFooterBand;
Left := 7;
Top := 7;
Font.Size:=16;
Caption:='Этот текст будет отображаться в конце каждой страницы...';
end;
//Этот текст будет отображаться в конце всего отчета, после данных
// if not GridRep.Bands.HasDetail then
GridRep.Bands.HasSummary:=true;
GridRep.Bands.SummaryBand.Height:=500;
with TQRLabel.Create(GridRep.Bands.SummaryBand) do
begin
Parent := GridRep.Bands.SummaryBand;
Left := 7;
Top := 15;
Font.Size:=16;
Caption:='Этот текст будет отображаться в конце всего отчета..';
end;
if not GridRep.Bands.HasColumnHeader then
GridRep.Bands.HasColumnHeader:=true;
if not GridRep.Bands.HasDetail then
GridRep.Bands.HasDetail:=true;
//
GridRep.Bands.ColumnHeaderBand.Height:=Abs(Grid.TitleFont.Height) + 10;
GridRep.Bands.DetailBand.Height:=Abs(Grid.Font.Height) + 10;
CurrentLeft := 12;
CurrentTop := 6;
{Запись, на которой пользователь останавливается в DBGrid}
BMark:=Grid.DataSource.DataSet.GetBookmark;
{Запретим мерцание грида в процессе работы отчёта}
Grid.DataSource.DataSet.DisableControls;
try
for i:=0 to Grid.FieldCount - 1 do
begin
if (CurrentLeft + Canvas.TextWidth(Grid.Columns[i].Title.Caption)) >
(GridRep.Bands.ColumnHeaderBand.Width) then
begin
CurrentLeft := 12;
CurrentTop := CurrentTop + Canvas.TextHeight('A') + 6;
GridRep.Bands.ColumnHeaderBand.Height :=
GridRep.Bands.ColumnHeaderBand.Height + (Canvas.TextHeight('A') + 10);
GridRep.Bands.DetailBand.Height :=
GridRep.Bands.DetailBand.Height + (Canvas.TextHeight('A') + 10);
end;
GridRep.Bands.ColumnHeaderBand.Color:=$00959595;
{Создадим заголовок отчёта при помощи QRLabels}
with TQRLabel.Create(GridRep.Bands.ColumnHeaderBand) do
begin
Parent := GridRep.Bands.ColumnHeaderBand;
Color := GridRep.Bands.ColumnHeaderBand.Color;
Left := CurrentLeft+25;
Top := CurrentTop;
Caption:=Grid.Columns[i].Title.Caption;
// Alignment:=Grid.Columns[i].Alignment;
Alignment:=taCenter;
end;
{Создадим тело отчёта при помощи QRDBText}
with TQRDbText.Create(GridRep.Bands.DetailBand) do
begin
Parent := GridRep.Bands.DetailBand;
Color := GridRep.Bands.DetailBand.Color;
Left := CurrentLeft;
Top := CurrentTop;
Alignment:=taCenter;//Grid.Columns[i].Alignment;
AutoSize:=false;
AutoStretch:=true;
Width:=Grid.Columns[i].Width;
Dataset:=GridRep.Dataset;
DataField:=Grid.Fields[i].FieldName;
CurrentLeft:=CurrentLeft + (Grid.Columns[i].Width + 15);
end;
end;
//
// lblPage.Left := bdTitle.Width - lblPage.Width - 10;
// lblDate.Left := bdTitle.Width - lblDate.Width - 10;
{Далее вызовем метод предварительного просмотра из QuickRep}
GridRep.PreviewModal; {либо, если желаете, то PreviewModal}
finally
with Grid.DataSource.DataSet do
begin
GotoBookmark(BMark);
FreeBookmark(BMark);
EnableControls;
end;
end;
end;
Admin: Не забываем про теги!
|