Текущий архив: 2003.02.24;
Скачать: CL | DM;
Вниз
Печать DBGrid Найти похожие ветки
← →
sav00 (2003-02-03 11:57) [0]Как можно вывести на принтер содержимое DBGrid в виде таблички, желательно с предварительным просмотром.
То что есть в сети по этому поводу все попробывал,ничего не работает ни компаненты ни через QReport.
Разъясните пожалуйсто как это сделать, или укажите ссылку на работующую компаненту или исходник с коментариями.
← →
hooch (2003-02-03 12:00) [1]используй EhLib
← →
Johnmen (2003-02-03 12:04) [2]Для этого существуют генераторы отчетов...
А то, что не получилось через QReport, так это от недостатка знаний, желаний и т.д.
← →
sav00 (2003-02-03 13:09) [3]А конкретней?
В QReport использую следующий код:
procedure TGridReportPreview(Grid: TDBGrid);
var
i, CurrentLeft, CurrentTop : integer;
BMark: TBookmark;
begin
GridRep.Dataset:=Grid.DataSource.DataSet;
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;
{Создадим заголовок отчёта при помощи QRLabels}
with TQRLabel.Create(GridRep.Bands.ColumnHeaderBand) do
begin
Parent := GridRep.Bands.ColumnHeaderBand;
Color := GridRep.Bands.ColumnHeaderBand.Color;
Left := CurrentLeft;
Top := CurrentTop;
Caption:=Grid.Columns[i].Title.Caption;
end;
{Создадим тело отчёта при помощи QRDBText}
with TQRDbText.Create(GridRep.Bands.DetailBand) do
begin
Parent := GridRep.Bands.DetailBand;
Color := GridRep.Bands.DetailBand.Color;
Left := CurrentLeft;
Top := CurrentTop;
Alignment:=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;
в результате чего выдается ошибка и приложение закрывается.
← →
Соловьев (2003-02-03 13:34) [4]А какая хоть ошибка?
← →
sav00 (2003-02-03 13:41) [5]Ошибка следующая:"Exception EAccess violation in module Project1.exe at 00000000. Access volation at address 0000000/Rad address of 00000000"
← →
BorisUK (2003-02-03 13:44) [6]Как посоветовал
> hooch © (03.02.03 12:00)
Делай если надо просто расчепятать его содержимое аз ис
TPreviewBox - для предосмотра
TPrintDBGridEh - для печати
Ну а если нужно по его данным свормировать красивый отчет... с колоночками разнесенными и подписанными полями реорганизованно как захош кароче,
то тоды Квикрепорт или его клоны тебе тепомогут
← →
sav00 (2003-02-03 13:48) [7]Еще пытался использовать компоненту с адреса:
http://delphi.mastak.ru/cgi-bin/news.pl?showone=1033275446
тоже не выходит.Здесь ругается следующим образом "Access violation at address 00403CE3 in module Project1.exe.Write of address 004A2F68"
← →
Соловьев (2003-02-03 13:50) [8]Пройдись Debager -ом и скажи где именно...
← →
sav00 (2003-02-03 13:51) [9]BorisUK а где взять
TPreviewBox - для предосмотра
TPrintDBGridEh - для печати
?
← →
sav00 (2003-02-03 13:52) [10]Соловьев при вызове процедуры TGridReportPreview(form2.DBGrid1);
← →
sav00 (2003-02-03 14:01) [11]А можно работающий исходник.
← →
BorisUK (2003-02-03 14:47) [12]
> sav00 (03.02.03 13:51)
> BorisUK а где взять
Ищи EhLib
Проблем возникнуть не должно... Любой поисковик.
← →
sav00 (2003-02-03 15:27) [13]--------------------------------------------------------------------------------
BorisUK пасибо нашел,попробую.
← →
sav00 (2003-02-05 21:39) [14]получилось
Страницы: 1 вся ветка
Текущий архив: 2003.02.24;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.007 c