Поиск:

Ответ в темуСоздание новой темы Создание опроса
> QuickReport v3.0, Печать данных из окна Preview 
V
    Опции темы
naldim
Дата 11.2.2009, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 17.3.2006

Репутация: нет
Всего: нет



Доброго времени суток!
Проблема следующая: отображаю данные в окне Preview. До этого этапа все отлично. Но когда доходит очередь до печати, т.е. нажимаю на  кнопку Print, то вижу лишь как появляется и быстро исчезает окно процесса печати, но самой печати не происходит. Ни каких ошибок не возникает, окно Preview закрывается корректно, программа тоже.
На форме QuickPeport расположены 4 полосы: rbTitle, rbColumnHeader, rbDetal и rbSummary. Полоса rbDetal содержит 4 QRLabel, которые и принимают данные из соответствующих колонок StringGrid, а также 4 элемента QRShape для отображения прямоугольников, которые вместе и показывают данные в сетке. 
Для заполнения данными из StringGrid четырех элементов QRLabel использую метод QuickRepNeedData().
Заранее благодарю за помощь.
PM MAIL   Вверх
naldim
Дата 11.2.2009, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 17.3.2006

Репутация: нет
Всего: нет



Значит, друзья, есть ниточка к решению данной проблемы. Предлагаю код, который выводит данные в окне Preview:
Код

void __fastcall TReportForm::QuickRepNeedData(TObject *Sender, bool &MoreData)
{
    if(RowNum >= Form1->StringGrid1->RowCount)
    {
        MoreData = false;
        return;
    }
    QRLabel1->Caption = Form1->StringGrid1->Cells[0][RowNum];
    QRLabel2->Caption = Form1->StringGrid1->Cells[1][RowNum];
    QRLabel3->Caption = Form1->StringGrid1->Cells[4][RowNum];
    QRLabel4->Caption = Form1->StringGrid1->Cells[10][RowNum];
    RowNum++;
    MoreData = true;
}

Так вот, если отключить строку MoreData = false;
, то принтер начинает печатать, но только последнюю строку из StringGrid.
В общем теперь понятно, как действует метод QuickRepNeedData(). Булевое свойство 
bool &MoreData разрешает или запрещает печать данных в зависимости от своего состояния. Когда в этом методе RowNum становится == числу строк в Гриде, MoreData становится равным false и печать запрещается.
Вопрос: как теперь вывести на печать все строки?
PM MAIL   Вверх
naldim
Дата 11.2.2009, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 17.3.2006

Репутация: нет
Всего: нет



Решение найдено!
Сперва, в чем была проблема...
Значит перед тем как вызывать метод QuickRepNeedData я инициализировал переменную RowNum значением 1, чтобы заполнение данных в QuickPeport начиналось с первой строки StringGrid. Так вот моя ошибка заключалась в том, что эту переменную надо было инициализировать не при создании формы в конструкторе, как это делал я: 
Код

__fastcall TReportForm::TReportForm(TComponent* Owner) : TForm(Owner)
{
  RowNum = 1;
}

а в событии BeforePrint:

Код

void __fastcall TReportForm::QuickRepBeforePrint(TCustomQuickRep *Sender, bool &PrintReport)
{
    RowNum = 1;
}

Теперь все работает правильно.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0486 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.