Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
3-75788
Kalinka
2003-02-06 10:38
2003.02.24
Как передать имя таблицы при вызове процедуры


3-75770
Шевченко Александр
2003-02-05 21:44
2003.02.24
Как программно сжать(упаковать) DBF-файл?


14-76190
Антон
2003-02-08 12:48
2003.02.24
Помогите написать одну функцию...


1-76022
dimonf
2003-02-12 11:33
2003.02.24
Подскажитн, как можно отключит BorderStyle в MDI окне!


1-75985
глупый
2003-02-12 18:41
2003.02.24
string&pchar





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский