|
#1
|
|||
|
|||
Печать Grid
Как организовать печать Grid
|
#2
|
||||
|
||||
Как вариант установить EhLib.
Можно через репорт. |
#3
|
||||
|
||||
Ну вариантов много, можно просто как битмап заслать на принтер, но это будет некрасиво. Можно экспортировать в эксел, а уже оттуда красиво напечатать, можно посидеть и написать красивый код который будет нормально отправлять на печать.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#4
|
||||
|
||||
через 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, 10.06.2010 в 10:48. |