powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Уже было но всё же .... CRYSTAL REPORT
6 сообщений из 6, страница 1 из 1
Уже было но всё же .... CRYSTAL REPORT
    #32611851
Kimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как создать полностью динамический отчет ?
...
Рейтинг: 0 / 0
Уже было но всё же .... CRYSTAL REPORT
    #32612026
Фокин С.А.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ниже приведен текст модуля для создания полностью динамический отчета
используя настройки DBGrid 'а (расположения колонок и их свойства).

Если в качестве DBGrid 'а используется TRxDBGrid то высота строк определяется параметром RxDBGrid.RowsHeight.

Написан давно под Delphi 5.

//---------пример вызова---------//

uses FokGrRep,Printers;

procedure TForm.PrintClick(Sender: TObject);
var
Fr:TFokGrRep;
RepPrinter:TPrinter;
begin
Fr:=TFokGrRep.CreateGridRep(Self,DbGrid1.Columns);
try
RepPrinter:=Printer;
Fr.Page.Orientation:=RepPrinter.Orientation;
Fr.Page.Length:=RepPrinter.PageHeight;
Fr.Page.Width:=RepPrinter.PageWidth;
Fr.ReportTitle:= 'ReportTitle';
Fr.PreviewModal;
finally
Fr.Free;
end;
end;



//---------------------------------сам модуль--------------//

unit FokGrRep;
{$l-}
{$Y-}
{$D-}
{$C-}
interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Qrctrls,qrprntr, QuickRpt, ExtCtrls, Grids, DBGrids, Db, RxDBCtrl,Printers,QRExport;

type
TFokGrRep=Class(TQuickRep)

private
{ Private declarations }
ColLb:TQRLabel;
ColSh:TQRShape;
ColText:TQRDBText;
GrColumns: TDBGridColumns;
DetailBand: TQRBand;
ColumnHeaderBand: TQRChildBand;
TitleBand: TQRBand;
procedure CreateColShVr(Control:TWinControl;const LeftSm:Integer);
procedure CreateColShHr(Control:TWinControl;const ShWidth,TopSm:Integer);
procedure CreateColLb(Control:TWinControl;Column:TColumn;const LeftSm:Integer);
procedure CreateColText(Control:TWinControl;Column:TColumn;const LeftSm:Integer);
published
TextFilter:TQRTextFilter;
TitleSysDate: TQRSysData;
TitleSysPage: TQRSysData;
TitleSysRepTitle: TQRSysData;
TitleLabelText: TQRLabel;
public
{ Public declarations }
constructor CreateGridRep(AOwner:TComponent;Columns:TDBGridColumns);
end;

implementation

constructor TFokGrRep.CreateGridRep(AOwner:TComponent;Columns:TDBGridColumns);
var
Id,LeftSm,FontPic:integer;
GrFieldType:set of TFieldType;


begin
inherited Create(AOwner);
Self.ShowProgress:=True;
Self.PrintIfEmpty:=False;
Self.Page.Orientation:=poLandscape;
TextFilter:=TQRTextFilter.Create(Self);
TitleBand:=TQRBand.Create(Self);
with TitleBand do begin
Parent:=Self;
BandType:=rbPageHeader;
Height:=40;
end;
Self.AddBand(TitleBand);
TitleLabelText:=TQRLabel.Create(TitleBand);
with TitleLabelText do begin
Parent:=TitleBand;
Caption:='Стр.№';
Left:=9;
Top:=16;
end;
TitleSysDate:=TQRSysData.Create(TitleBand);
with TitleSysDate do begin
Parent:=TitleBand;
Data:=qrsDate;
Left:=106;
Top:=TitleLabelText.Top;
end;
TitleSysPage:=TQRSysData.Create(TitleBand);
with TitleSysPage do begin
Parent:=TitleBand;
Data:=qrsPageNumber;
Top:=TitleLabelText.Top;
Left:=TitleLabelText.Left+TitleLabelText.Width+2;
end;
TitleSysRepTitle:=TQRSysData.Create(TitleBand);
with TitleSysRepTitle do begin
Parent:=TitleBand;
Data:=qrsReportTitle;
Top:=0;
AlignToBand:=True;
Alignment:=taCenter;
end;
TitleBand.HasChild:=True;
ColumnHeaderBand:=TitleBand.ChildBand;
DetailBand:=TQRBand.Create(Self);
with DetailBand do begin
Parent:=Self;
BandType:=rbDetail;
end;
Self.AddBand(DetailBand);
GrColumns:=Columns;
GrFieldType:=[ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftDate, ftTime, ftDateTime, ftBytes]; // Типы полей
LeftSm:=0;
with (GrColumns.Grid as TDBGrid) do begin
Self.DataSet:=DataSource.DataSet;
FontPic:=Self.TextHeight(TitleFont,'FOK')+5;
ColumnHeaderBand.Height:=abs(FontPic);
if GrColumns.Grid is TRxDBGrid then FontPic:=(GrColumns.Grid as TRxDBGrid).RowsHeight
else FontPic:=Self.TextHeight(Font,'FOK')+5;
DetailBand.Height:=ABS(FontPic);
end;
CreateColShVr(ColumnHeaderBand,LeftSm);
CreateColShVr(DetailBand,LeftSm);
Inc(LeftSm,ColSh.Width);
with GrColumns do begin
for Id:=0 to Count-1 do begin
if (Items[Id].Field.DataType in GrFieldType) and (Items[Id].Visible) then begin
CreateColLb(ColumnHeaderBand,Items[Id],LeftSm);
CreateColText(DetailBand,Items[Id],LeftSm);
Inc(LeftSm,ColLb.Width);
CreateColShVr(ColumnHeaderBand,LeftSm);
CreateColShVr(DetailBand,LeftSm);
Inc(LeftSm,ColSh.Width);
end;
end;
Dec(LeftSm,ColSh.Width);
Inc(LeftSm,1);
CreateColShHr(ColumnHeaderBand,LeftSm,0);
CreateColShHr(ColumnHeaderBand,LeftSm,ColumnHeaderBand.Height-1);
CreateColShHr(DetailBand,LeftSm,DetailBand.Height-1);
end;
end;

procedure TFokGrRep.CreateColText(Control:TWinControl;Column:TColumn;const LeftSm:Integer);
begin
ColText:=TQRDBText.Create(Control);

with ColText do begin
Parent:=Control;
AlignToBand:=False;
AutoSize:=False;
AutoStretch:=False;
Left:=LeftSm;
WordWrap:=False;
Top:=2;
Width:=Column.Width;
Font:=Column.Font;
Font.Color:=clBlack;
Transparent:=False;
Alignment:=Column.Alignment;
DataSet:=(Column.Grid as TDBGrid).DataSource.DataSet;
DataField:=Column.FieldName;
Height:=Control.Height-Top-1;
end;
end;

procedure TFokGrRep.CreateColLb(Control:TWinControl;Column:TColumn;const LeftSm:Integer);
begin
ColLb:=TQRLabel.Create(Control);
with ColLb do begin
Parent:=Control;
AlignToBand:=False;
AutoSize:=False;
AutoStretch:=False;
WordWrap:=False;
Left:=LeftSm;
Top:=1;
Caption:=Column.Title.Caption;
Width:=Column.Width;
Font:=Column.Title.Font;
Font.Color:=clBlack;
Transparent:=False;
Alignment:=Column.Title.Alignment;
Height:=Control.Height-1;

end;
end;

procedure TFokGrRep.CreateColShVr(Control:TWinControl;const LeftSm:Integer);

begin
ColSh:=TQRShape.Create(Control);
with ColSh do begin
Parent:=Control;
Shape:=qrsVertLine;
Pen.Color:=clBlack;
Pen.Width:=1;
Top:=0;
Width:=1;
Left:=LeftSm;
Height:=Control.Height;
end;
end;

procedure TFokGrRep.CreateColShHr(Control:TWinControl;const ShWidth,TopSm:Integer);

begin
ColSh:=TQRShape.Create(Control);
with ColSh do begin
Parent:=Control;
Shape:=qrsHorLine;
Pen.Color:=clBlack;
Pen.Width:=1;
Top:=TopSm;
Left:=1;
Width:=ShWidth-Left;
Height:=1;
end;
end;


end.
...
Рейтинг: 0 / 0
Уже было но всё же .... CRYSTAL REPORT
    #32612219
Kimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока не разбирался но ОГОМНЕЙШЕЕ спасибо :-)
...
Рейтинг: 0 / 0
Уже было но всё же .... CRYSTAL REPORT
    #32612470
Kimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если бы оно было бы на ВБ или на С# :-( я делфей совсем не знаю ....
...
Рейтинг: 0 / 0
Уже было но всё же .... CRYSTAL REPORT
    #32612670
Flare
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Краткий ответ на вопрос "Как создать полностью динамический отчет":
Руками.
...
Рейтинг: 0 / 0
Уже было но всё же .... CRYSTAL REPORT
    #32613099
Kimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. программно нормаль создается заголовок, данные, фут группировки ?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Уже было но всё же .... CRYSTAL REPORT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]