powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FastReport необычный подсчет количества страниц
25 сообщений из 34, страница 1 из 2
FastReport необычный подсчет количества страниц
    #39726935
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток уважаемые форумчане!

У меня имеется шаблон отчета FR. В нем создано 4 страницы (вкладки Page1, Page2, Page3, Page4). В идеале заполненный шаблон должен умещаться на эти 4 страницы, но естественно если данных на какой-либо странице много, то они переходят на следующую страницу.

Общее количество страниц перед предпросмотром я могу посчитать вот так:

Код: pascal
1.
2.
3.
frxReport.PrepareReport(True);
ShowMessage(IntToStr(frxReport.PreviewPages.Count));
frxReport.ShowPreparedReport;



А вот можно ли каким-нибудь образом посчитать отдельно количество Page2 и Page3?
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39726942
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13А вот можно ли каким-нибудь образом посчитать отдельно количество Page2 и Page3?
В Page1 сбрасывать счетчик/переменную скриптом, в Page2 и Page3 увеличивать.
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39726945
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman, что то пока не понял мысль... Мне нужно отдельно посчитать сколько страниц заняло page2 и отдельно сколько страниц заняло page3.
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39726949
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13Мне нужно отдельно посчитать сколько страниц заняло page2 и отдельно сколько страниц заняло page3.
Ок, придется завести две переменных, которые будут считаться скриптом. :)
dartveider13что то пока не понял мысль...
Что именно?
Как объявлять переменные в отчете?
Как скрипты в отчете писать в событиях объектов отчета?
Или как получить к ним доступ из программы?
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39726955
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman, ну да я с переменными не пробовал еще работать. Сейчас конечно мануал посмотрю. В коде помоему через FindObject можно найти то что хочется. Наверное остается вопрос какое событие в отчете использовать?
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39726959
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13Наверное остается вопрос какое событие в отчете использовать?
AfterPrint у любого элемента, который всегда попадает в отчет. Заголовок данных, например.
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39726966
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman, ага примерно начинаю понимать ход мыслей. Еще маленький вопрос. В мануале написано что изменение значения переменной делается через функцию Set. Получается, чтобы добавить к переменной единицу нужно сделать вот так?

Код: pascal
1.
Set('MyVariable', <MyVariable> + 1)
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39726975
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не помню точно...

Есть Get и есть Set.
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39726980
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman, сейчас пробую, отпишусь по результату
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39727006
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman, с переменными в отчете получилось считать количество. В код пока не получилось передать. Пытаюсь так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
var
p1,p2: Variant;
begin

// ... Загрузка отчета из файла

frxReport.PrepareReport(True);
p1 := frxReport.Variables['Page2Count'];
p2 := frxReport.Variables['Page3Count'];
ShowMessage(p1 + ' ' + p2);

end;



Пишет Could not Convert null into type OleStr, хотя в самом отчете выводил переменные - циферки правильные. Получается как то неправильно пытаюсь получить
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39727010
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13циферки правильные
Когда делфи научился складывать строки с числами?
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39727032
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman, мм я так понимаю лучше использовать типизированные переменные?
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39727061
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13я так понимаю лучше использовать типизированные переменные?
Даже с ними такой код не будет работать, но хотя-бы ошибка будет на этапе компиляции:
dartveider13
Код: pascal
1.
ShowMessage(p1 + ' ' + p2);
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39727075
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman, нет ошибки на этапе компиляции при замене варианта на integer нет но ошибка та же

Could not convert variant of type null into type integer

А как вообще правильно выцепить эти переменные в код делфи?
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39727079
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13нет ошибки на этапе компиляции
Нельзя строку складывать с числом. И компилятор такого не может позволить.
Ошибка будет "E2008 Incompatible types".
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39727086
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var
p1,p2: Integer;
begin
// подготовка отчета

frxReport.PrepareReport(True);
p1 := frxReport.Variables['Page2Count']; // Здесь происходит ошибка в отладчике
p2 := frxReport.Variables['Page3Count'];

ShowMessage('Page2 = ' + IntToStr(p1) + ' Page3 = ' + IntToStr(p2));
end;



Код компилится... Возможно неправильно обращаюсь к переменным?
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39727108
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13Возможно неправильно обращаюсь к переменным?
Они добавлены в отчете? Через диалоговое окно с переменными?
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39727113
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman, да. В списке переменных я добавил группу MyVariables и 2 переменные Page2Count и Page3Count. В скрипте описал счетчик. Для проверки вывел значения переменных на последней странице. Они посчитали правильно. Вот теперь как их передать в код до вывода отчета на предпросмотр?
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39727117
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dartveider13,

Обработчик Report.OnGetValue написал?
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39727120
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zinpub, ээээ нет. А что там надо написать?
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39727125
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dartveider13zinpub, ээээ нет. А что там надо написать?

Что-типа:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
procedure TForm1.frxReport1GetValue(const VarName: String;
var Value: Variant);
begin
  if VarName='MyVariableName' then
   Value := 'test'
end;
 
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39727126
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ааа... пардон... вам в обратную сторону надо
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39727130
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zinpub, а зачем? Мне не надо передавать в отчет данные, а наоборот из него данные в код делфи забрать
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39727132
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zinpub, да да))) Именно туда, через черный ход)))
...
Рейтинг: 0 / 0
FastReport необычный подсчет количества страниц
    #39727148
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я попробовал из мануала немножко по другому сделать

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
var
frVariable: TfrxVariable;
Index: Integer;
p1, p2: Variant;
begin

// Загрузка отчета

frxReport.PrepareReport(True);

Index := frxReport.Variables.IndexOf('Page2Count');
if Index <> -1 then
begin
frVariable := frxReport.Variables.Items[Index];
p1 := frVariable.Value;
end;

// Аналогично со второй переменной

frxReport.ShowPreparedReport;

end;



В отладчике видно, что он находит эти переменные. Но в них пусто (NULL).
Не может ли это быть из-за того, что скрипт позже выполняется? Хотя я же пишу ему перед этим PrepareReport?
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FastReport необычный подсчет количества страниц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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