Quickreporte свойство Preview

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

E_Korobko

Гость
#1
Подскажите, пожалуйста, почему в QuickReporte свойство Preview табличка выводиться некорректно: каждая строка дублируется по 2 раза, между строчками большое расстояние и маленькая табличка получаеться разбросанной на 2-х листах.
 
B

Barmutik

Гость
#2
Ну судя по всему как Вы построили отчёт так он и показывается ...
 
E

Ego

Гость
#3
Подскажите, пожалуйста, как можно передать результат запроса в текстовый файл(или ворд).
 
S

simon

Гость
#4
Как по мне, намного проще и удобнее для построения отчетов пользоваться компонентом FastReport ( бесплатный вариант - FreeReport). Найди его ( или давай скину те на мыло), и лиши ся проблем...
 
E

E_Korobko

Гость
#5
Скинь, если можно!
E_Korobko@mail.ru
Заранее спасибо!
:)
 
G

Guest

Гость
#6
Лови...
Скажешь, нормально скачал... а то у мя в данный момент нет доступа к нормпльному SMTP, гемороился 3 часа резал через mail.ru...
 
S

simon

Гость
#7
Там разберешся, восемь архивчиков (порезаный) - компонент, и один - доки...
Удачки...
 
P

Poseidon

Гость
#8
<!--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;
 
Статус
Закрыто для дальнейших ответов.