powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Использование переменных отчета в FastReport 2.52 (BCB 5)
1 сообщений из 1, страница 1 из 1
Использование переменных отчета в FastReport 2.52 (BCB 5)
    #32549609
Здравствуйте всем.

Пытался использовать переменные в отчете, сделал сначала так
(первоначально была работа с frReport->Dictionary):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
void __fastcall TFWorkAbon::AFPreviewExecute(TObject *Sender)
{ // Preview
AnsiString WPath = ExtractFilePath(ParamStr( 0 ));
 DMAbn->QAbnReport->DisableControls();
 frRepOb->LoadFromFile(WPath + "RepOborot.frf");

 /*
 frRepOb->Dictionary->Variables->Clear();
 frRepOb->Dictionary->Variables->Variable["cbTypeAbon"] =
 FWorkAbon->ChkBoxTypeAbon->Checked;
 frRepOb->Dictionary->Variables->Variable["STypeAbon"] =
 FWorkAbon->LCBoxTypeAbon->Value;
 frRepOb->Dictionary->Variables->Variable["PERIOD"] =
 "''"+ FormatDateTime("mmmm yyyy", EncodeDate(CYear, CMonth, 1)) + "''";
*/ 

        frRepOb->ShowReport();
 DMAbn->QAbnReport->EnableControls();
}

Не менялось значение переменной в отчете в зависимости от
состояния чекбокса на форме приложения.
Потом мне объяснили, что нужно использовать событие OnGetValue.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
void __fastcall TFWorkAbon::frRepObGetValue(const AnsiString ParName,
      Variant &ParValue)
{
if(ParName == "cbTypeAbon") ParValue = FWorkAbon->ChkBoxTypeAbon->Checked;
if(ParName == "STypeAbon") ParValue = FWorkAbon->LCBoxTypeAbon->Value;
if(ParName == "PERIOD")
ParValue = "''"+ FormatDateTime("mmmm yyyy", EncodeDate(CYear, CMonth,  1 )) +
"''";
}

Во время выполнения начала выдаваться ошибка:

---------------------------
Ошибка
---------------------------
Возникла ошибка при обработке выражения
Подгруппа: [If(cbTypeAbon, STypeAbon, 'ВСЕ АБОНЕНТЫ')]
Документ: frRepOb
Объект: Memo28
Переменная не определена: "CBTYPEABON"
---------------------------
OK
---------------------------

Потом я догадался, что в Паскале наименования переменных не зависят от
регистра,
и это накладывает свой отпечаток на FastReport.
Изменил OnGetValue:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
void __fastcall TFWorkAbon::frRepObGetValue(const AnsiString ParName,
      Variant &ParValue)
{
if(ParName == "CBTYPEABON") ParValue = FWorkAbon->ChkBoxTypeAbon->Checked;
if(ParName == "STYPEABON") ParValue = FWorkAbon->LCBoxTypeAbon->Value;
if(ParName == "PERIOD")
ParValue = "''"+ FormatDateTime("mmmm yyyy", EncodeDate(CYear, CMonth,  1 )) +
"''";
}

Теперь отчет формируется без выдачи ошибок, ожидаем результат, но опять не
изменяется надпись, в зависимости от состояния чекбокса на форме приложения.

Кроме того, переменной отчета STYPEABON присваиваем значение "ФИЗИЧЕСКИЕ
лица"
В отчете выводится только слово "ФИЗИЧЕСКИЕ", т.е. строка отсекается по
первому пробелу.

Кто знает решение, подскажите пожалуйста.

---

Александр.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Использование переменных отчета в FastReport 2.52 (BCB 5)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]