Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.04.2011, 12:05
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию DbGridEH нумерация строк при печати

Здравствуйте. Помогите сделать отчёт с нумерацией строк.
Сейчас это выглядит так


Отчёт формируется так:
Код:
...
PrinterPreview.Previewer.ViewMode:=vm150;
PrintDBGridEh_orgastat.Preview;
...

Свойство грида ShowRecNo=true но в отчёт нумерация не попадает:

Если можно поделитесь правильным кодом или наведите на путь истинный. Спасибо.

Последний раз редактировалось gebs, 04.04.2011 в 12:15.
Ответить с цитированием
  #2  
Старый 04.04.2011, 12:43
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Я бы не стал придумывать велосипед а использовал бы готовые построители отчетов например FastReports или RaveReports.
Ответить с цитированием
  #3  
Старый 04.04.2011, 12:58
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию

Цитата:
Сообщение от Pilot_Red
Я бы не стал придумывать велосипед а использовал бы готовые построители отчетов например FastReports или RaveReports.

Но: на событии OnGetCellParams в новом созданном столбце делаем:

Код:
...
if (DataModule10.MyQ_orgstat.RecNo > 0) then
Params.Text:= IntToStr(DataModule10.MyQ_orgstat.RecNo);
...

При этом в отчёте появляется нумерация в вгриде нет. Я так понимаю надо на событии в гриде OnDrowDataCell что-то сделать...
Ответить с цитированием
  #4  
Старый 04.04.2011, 13:14
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от gebs
Но: на событии OnGetCellParams в новом созданном столбце делаем:

Код:
...
if (DataModule10.MyQ_orgstat.RecNo > 0) then
Params.Text:= IntToStr(DataModule10.MyQ_orgstat.RecNo);
...

При этом в отчёте появляется нумерация в вгриде нет. Я так понимаю надо на событии в гриде OnDrowDataCell что-то сделать...
так я не понимаю, тебе в гриде нужна нумерация, или в самом отчете???
Ответить с цитированием
  #5  
Старый 04.04.2011, 13:35
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию

Цитата:
Сообщение от Pilot_Red
так я не понимаю, тебе в гриде нужна нумерация, или в самом отчете???
Ну в отчёте я уже сделал, осталось в гриде.
Ответить с цитированием
  #6  
Старый 04.04.2011, 14:21
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

в гриде... можно конечно использовать DrawColumnCell. и в нем чисто recNo отрисовывать. Но этот фокус прокатит, если у тебя таблица будет выводится в чистом виде, без всяких фильтров, т.к. может получиться такое
............
1
2
3
4
10
11
55
56
57
Ответить с цитированием
  #7  
Старый 05.04.2011, 11:44
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию

Цитата:
Сообщение от Pilot_Red
в гриде... можно конечно использовать DrawColumnCell. и в нем чисто recNo отрисовывать. Но этот фокус прокатит, если у тебя таблица будет выводится в чистом виде, без всяких фильтров, т.к. может получиться такое
............
1
2
3
4
10
11
55
56
57

Фильтры не планируется использовать, может кто поделится примером кода для DrawColumnCell?
Ответить с цитированием
  #8  
Старый 05.04.2011, 12:07
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

в гриде создаешь столбец в котором у тебя будет нумерация. И обзываешь (свойство Title ) его например №п.п.

далеев DrawColumnCell прописываешь
Код:
if Column.Title.Caption='№п.п.' then
begin
DbGrid.Canvas.FillRect(rect);
DbGrid.Canvas.TextOut(rect.Left,rect.Top,Inttostr(DbGrid.DataSource.DataSet.RecNo)); 
end
else
DbGrid.DefaultDrawColumnCell(rect,datacol,column,state);

и не забудь свойство грида DefaultDrawing =false постаить
Ответить с цитированием
  #9  
Старый 05.04.2011, 12:56
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

А можно в набор добавить вычесляемое поле еще...
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #10  
Старый 05.04.2011, 13:05
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от Black Raider
А можно в набор добавить вычесляемое поле еще...
как вариант. Но по-моему сточки зрения оптимизэйшн ручная отрисовка побыстрее будет. Так как вычисляемое поле вычисляется по всей таблице, а отрисовка происходит только по ее видимой части грида.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:43.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter