Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2007, 08:37   #1
Cantana
форвард
Форумчанин
 
Аватар для Cantana
 
Регистрация: 03.08.2007
Сообщений: 130
Плохо распечатка с DBGrid а ?

Привет всем прогерам и тем кто учиться
у меня вопрос как распечатать с DBGrid а данные ?
dela ne v dengax a v yego kolichestve
Cantana вне форума Ответить с цитированием
Старый 25.10.2007, 08:46   #2
kommunist
C# developer
Форумчанин
 
Аватар для kommunist
 
Регистрация: 03.10.2007
Сообщений: 393
По умолчанию

попробуй компонент printdialog
I like WPF
kommunist вне форума Ответить с цитированием
Старый 25.10.2007, 08:57   #3
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
Восклицание Печать содержимого DBGrid через QuickReport

Цитата:
Сообщение от Cantana Посмотреть сообщение
Привет всем прогерам и тем кто учиться
у меня вопрос как распечатать с DBGrid а данные ?
QuickReport это набор компонент для Delphi позволяющий построить отчет из базы данных быстро и просто. Позволяет не только отпечатать отчет, но и просмотреть его на экране, что позволяет пользователю проверить результат без порчи бумаги и экспортировать отчет в другие форматы, такие как простой ASCII текст, текст разделенный запятыми (CSV) и в HTML.

К недостаткам можно отнести следующее:
Внешний вид отчета "зашит" в самом коде компонентов и никаких вариантов настройки оформления не предлагается.
Выбор цветовой гаммы и шрифтов заботливо взяли на себя разработчики :о)
С точки зрения простоты настройки лучше бы было устроить некую систему умолчаний, но все же разрешить самому программисту решить, как именно должен выглядеть его, пусть и очень простенький, отчет.

Компоненты берут заголовки для стобцов отчета из полей DisplayLabel. Это естественно для печати TDataSet, но почему же и при печати TDGgid названия заголовков тоже берутся оттуда, а не их полей Columns.Title.Caption? Если уж обещать напечатать RDBGrid, то на бумаге он должен быть очень похож на то, что видно на экране.

Не печатаются (просто игнорируются) поля типа Blob , ни memo-текст, ни графика

Создайте новую форму, назвав её TGridReport, и поместите на неё TQuickRep. Переименуйте QuickRep в GridRep. Затем Следующая процедура, получает в качестве параметра DBGrid

Код:
procedure TGridReport.Preview(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;
Нет неразрешимых проблем, есть неприятные решения.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 25.10.2007, 09:15   #4
Cantana
форвард
Форумчанин
 
Аватар для Cantana
 
Регистрация: 03.08.2007
Сообщений: 130
По умолчанию

Цитата:
Сообщение от kommunist Посмотреть сообщение
попробуй компонент printdialog
а как отправить на печать с DBGrid а ? не подскажеш
dela ne v dengax a v yego kolichestve
Cantana вне форума Ответить с цитированием
Старый 25.10.2007, 09:48   #5
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
Сообщение

Цитата:
Сообщение от kommunist Посмотреть сообщение
попробуй компонент printdialog
PrintDialog ничего не распечатывает, он только может передать все опции которые пользователь там устоновил, печать нужно организовывать самостоятельно...

Остальное смотри здесь:
http://programmersforum.ru/showthread.php?t=8037

Благодаря завистникам мы узнаем о себе то, чего могли бы достичь, если бы их не имели
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 25.10.2007, 10:58   #6
Cantana
форвард
Форумчанин
 
Аватар для Cantana
 
Регистрация: 03.08.2007
Сообщений: 130
По умолчанию

что-то не получаеться ............
dela ne v dengax a v yego kolichestve
Cantana вне форума Ответить с цитированием
Старый 25.10.2007, 11:00   #7
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

Цитата:
Сообщение от Cantana Посмотреть сообщение
что-то не получаеться ............
Где именно, что именно?
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 25.10.2007, 11:40   #8
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Используй Fastreport там есть спец. компонента для печати таблиц
SERG1980 вне форума Ответить с цитированием
Старый 25.10.2007, 12:11   #9
Cantana
форвард
Форумчанин
 
Аватар для Cantana
 
Регистрация: 03.08.2007
Сообщений: 130
По умолчанию

Цитата:
Сообщение от SERG1980 Посмотреть сообщение
Используй Fastreport там есть спец. компонента для печати таблиц
а в Delphi 7 оно есть ?
dela ne v dengax a v yego kolichestve
Cantana вне форума Ответить с цитированием
Старый 25.10.2007, 13:01   #10
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Нет но его можно скачать
SERG1980 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DBGrid Ane4ka БД в Delphi 28 01.06.2008 10:00
DBGRID Devikss БД в Delphi 2 29.05.2008 08:17
DBGRID Devikss Помощь студентам 1 28.05.2008 20:20
DBGrid sergei64_89 БД в Delphi 0 09.05.2008 19:48