Quickreporte свойство Preview

Тема в разделе "Delphi - Базы данных", создана пользователем E_Korobko, 22 июл 2005.

Статус темы:
Закрыта.
  1. E_Korobko

    E_Korobko Гость

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

    Barmutik Гость

    Ну судя по всему как Вы построили отчёт так он и показывается ...
     
  3. Ego

    Ego Гость

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

    simon Гость

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

    E_Korobko Гость

    Скинь, если можно!
    E_Korobko@mail.ru
    Заранее спасибо!
    :)
     
  6. Guest

    Guest Гость

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

    simon Гость

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

    Poseidon Гость

    <!--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? Тогда вот:


    Код (Text):
    {Для начала создайте новую форму, назвав её 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;
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей