![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Печать DBGrid [D4, IB5.x, Paradox]
sav00 © (2003-02-03 11:57:00)Как можно вывести на принтер содержимое DBGrid в виде таблички, желательно с предварительным просмотром.
То что есть в сети по этому поводу все попробывал,ничего не работает ни компаненты ни через QReport.
Разъясните пожалуйсто как это сделать, или укажите ссылку на работующую компаненту или исходник с коментариями.
sav00 (2003-02-05 21:39:00) [1]получилось
sav00 (2003-02-03 15:27:00) [2]--------------------------------------------------------------------------------
BorisUK пасибо нашел,попробую.
BorisUK (2003-02-03 14:47:00) [3]
> sav00 (03.02.03 13:51)
> BorisUK а где взять
Ищи EhLib
Проблем возникнуть не должно... Любой поисковик.
sav00 (2003-02-03 14:01:00) [4]А можно работающий исходник.
sav00 (2003-02-03 13:52:00) [5]Соловьев при вызове процедуры TGridReportPreview(form2.DBGrid1);
sav00 (2003-02-03 13:51:00) [6]BorisUK а где взять
TPreviewBox - для предосмотра
TPrintDBGridEh - для печати
?
Соловьев (2003-02-03 13:50:00) [7]Пройдись Debager -ом и скажи где именно...
sav00 (2003-02-03 13:48:00) [8]Еще пытался использовать компоненту с адреса:
http://delphi.mastak.ru/cgi-bin/news.pl?showone=1033275446
тоже не выходит.Здесь ругается следующим образом "Access violation at address 00403CE3 in module Project1.exe.Write of address 004A2F68"
BorisUK (2003-02-03 13:44:00) [9]Как посоветовал
> hooch © (03.02.03 12:00)
Делай если надо просто расчепятать его содержимое аз ис
TPreviewBox - для предосмотра
TPrintDBGridEh - для печати
Ну а если нужно по его данным свормировать красивый отчет... с колоночками разнесенными и подписанными полями реорганизованно как захош кароче,
то тоды Квикрепорт или его клоны тебе тепомогут
sav00 (2003-02-03 13:41:00) [10]Ошибка следующая:"Exception EAccess violation in module Project1.exe at 00000000. Access volation at address 0000000/Rad address of 00000000"
Соловьев (2003-02-03 13:34:00) [11]А какая хоть ошибка?
sav00 (2003-02-03 13:09:00) [12]А конкретней?
В 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;
в результате чего выдается ошибка и приложение закрывается.
Johnmen (2003-02-03 12:04:00) [13]Для этого существуют генераторы отчетов...
А то, что не получилось через QReport, так это от недостатка знаний, желаний и т.д.
hooch (2003-02-03 12:00:00) [14]используй EhLib