Quickreporte свойство Preview

  • Автор темы Автор темы E_Korobko
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
E

E_Korobko

Подскажите, пожалуйста, почему в QuickReporte свойство Preview табличка выводиться некорректно: каждая строка дублируется по 2 раза, между строчками большое расстояние и маленькая табличка получаеться разбросанной на 2-х листах.
 
Ну судя по всему как Вы построили отчёт так он и показывается ...
 
Подскажите, пожалуйста, как можно передать результат запроса в текстовый файл(или ворд).
 
Как по мне, намного проще и удобнее для построения отчетов пользоваться компонентом FastReport ( бесплатный вариант - FreeReport). Найди его ( или давай скину те на мыло), и лиши ся проблем...
 
Скинь, если можно!
E_Korobko@mail.ru
Заранее спасибо!
:)
 
Лови...
Скажешь, нормально скачал... а то у мя в данный момент нет доступа к нормпльному SMTP, гемороился 3 часа резал через mail.ru...
 
Там разберешся, восемь архивчиков (порезаный) - компонент, и один - доки...
Удачки...
 
<!--QuoteBegin-E_Korobko+22:07:2005, 10:42 -->
<span class="vbquote">(E_Korobko @ 22:07:2005, 10:42 )</span><!--QuoteEBegin-->Подскажите, пожалуйста, почему в QuickReporte свойство Preview табличка выводиться некорректно
[snapback]22434" rel="nofollow" target="_blank[/snapback]​
[/quote] О какой именно табличке рачь? О DBGrid? Тогда вот:


Код:
{Для начала создайте новую форму, назвав её 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;
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab