Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.02.24;
Скачать: [xml.tar.bz2];

Вниз

Печать 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.009 c
6-76077
Карелин Артем
2002-12-26 12:18
2003.02.24
IP адрес.


1-75965
koly01
2003-02-12 13:33
2003.02.24
при перезаписи больших файлов как проверить что файл уже записан


1-75892
Grom
2003-02-14 09:04
2003.02.24
DELPHI&EXEL Save As


3-75766
KIR
2003-01-30 21:17
2003.02.24
Говорят, что IB плохо работает с деревьями...?


3-75814
UnderSun
2003-02-05 00:27
2003.02.24
Проблемы с обновлением запроса из др потока (IB 6.5)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский