к вопросу об отмене выполнения отчёта при назначении ему в качестве Dataset'а - TfrxUserDataSet. Происходит зацикливание, и как результат загрузка процессора. В процедуре procedure TfrxEngine.RunReportPages идёт цикл
Report.DataSet.First;
while not Report.DataSet.Eof do
begin
DoPages;
Report.DataSet.Next;
end;
При этом в вызываемой внутри цикла в процедуре DoPages, которая в свою очередь вызывает процедуру procedure TfrxEngine.RunPage(Page: TfrxReportPage), происходит установка на начало набора FPage.DataSet.First;(frxEngine, Line 986). Как результат - бесконечный цикл.
Среда Delphi5.
Вроде делаю всё правильно, если не прерывать- всё нормально происходит.
И ещё раз к автору - нельзя вынести опционально процесс формирования отчёта :
- либо выводить модальное окно с отображением - сколько страниц сформировано
- либо оставлять в текущем варианте - изменение надписи Отмена\Закрыть
Ситуация следующая:
1) C++Builder 6, FR 3.02
frxReport1->PrintOptions->ShowDialog = false; - НЕ РАБОТАЕТ
Диалог показывается всегда. Пробовал менять как в дизайнере, так и в run-time.
После нескольких попыток изменения свойства ShowDialog в дизайнере, при попытке выполнить frxReport1->ShowReport(); получаю AV.
2) Delphi 5, FR 3.02
frxReport1.PrintOptions.ShowDialog := False; - в run-time работает, а в дизайне - НЕТ.
Совсем плохая ситуация. Посмотрели Fr 2.4, FR3 купили, а у него не работают базовые функции...
Может купившим FR3 можно получить FR 2.5 бесплатно ???
На форме есть frxReport1 и frxPreview1.
Во время печати (frxReport1->Print() на превьюшке появляется окно с надписью "Printing Page 1". После печати это окно не пропадает, а превьюха превращается в серый квадрат с этим окошком посредине.
к вопросу об отмене выполнения отчёта при назначении ему в качестве Dataset'а - TfrxUserDataSet. Происходит зацикливание, и как результат загрузка процессора. В процедуре procedure TfrxEngine.RunReportPages идёт цикл
Report.DataSet.First;
while not Report.DataSet.Eof do
begin
DoPages;
Report.DataSet.Next;
end;
При этом в вызываемой внутри цикла в процедуре DoPages, которая в свою очередь вызывает процедуру procedure TfrxEngine.RunPage(Page: TfrxReportPage), происходит установка на начало набора FPage.DataSet.First;(frxEngine, Line 986). Как результат - бесконечный цикл.
Среда Delphi5.
Вроде делаю всё правильно, если не прерывать- всё нормально происходит.
И ещё раз к автору - нельзя вынести опционально процесс формирования отчёта :
- либо выводить модальное окно с отображением - сколько страниц сформировано
- либо оставлять в текущем варианте - изменение надписи Отмена\Закрыть
В 3.02 баг - в этом цикле не происходит выхода при отмене. Кроме того, нельзя назначать один и тот же источник на Report.Dataset, Page.DataSet и Band.Dataset.
По поводу последнего вопроса - постараюсь сделать, но не обещаю что скоро.
Ситуация следующая:
1) C++Builder 6, FR 3.02
frxReport1->PrintOptions->ShowDialog = false; - НЕ РАБОТАЕТ
Диалог показывается всегда. Пробовал менять как в дизайнере, так и в run-time.
После нескольких попыток изменения свойства ShowDialog в дизайнере, при попытке выполнить frxReport1->ShowReport(); получаю AV.
2) Delphi 5, FR 3.02
frxReport1.PrintOptions.ShowDialog := False; - в run-time работает, а в дизайне - НЕТ.
Совсем плохая ситуация. Посмотрели Fr 2.4, FR3 купили, а у него не работают базовые функции...
Может купившим FR3 можно получить FR 2.5 бесплатно ???
На форме есть frxReport1 и frxPreview1.
Во время печати (frxReport1->Print() на превьюшке появляется окно с надписью "Printing Page 1". После печати это окно не пропадает, а превьюха превращается в серый квадрат с этим окошком посредине.
Как это лечить ???
При работе с TfrxPreview надо пользоваться *его* методами, в частности,
frxPreview1->Print();
Странно это. Отчет то один, почему нужно использовать для печати методом TfrxPreview а не самого репорта...
Но пусть, просто будем знать.
Только вышеописанная ситуация - это баг, и его надо фиксить.
А из каких соображений в FR3 окно дизайнера перестало быть модальным? Дело в том, что в том виде как сейчас есть вызванный из IDE дизайнер можно свернуть и, например, удалить редактируемый в данный момент frxReport с формы... Только не надо мне говорить, что этого просто не надо делать!
Вообще как-то странно выглядят все эти манипуляции с ActiveForm.Enabled в frxReport.DesignReport...
Что гораздо более неприятно в приложении с MDI интерфейсом после закрытия дизайнера, вопреки хэлпу от Borland, вызов f.SetFocus не выполняет установку Screen.ActiveForm (он становится равным nil/NULL). В итоге нужно переключиться на другое приложение и вернуться или открыть и закрыть другую форму этого-же приложения (благо меню и все остальное работает), чтобы можно было продолжить работу. Т.е. дочернее MDI окно, которое было активно в момент вызова дизайнера, после закрытия последнего остается недоступным.
PS. С SDI не проверял. Preview работает нормально. Среда BCB6. FR 3.03
Присоединяюсь к AnDy. Этот рукописный модальный цикл, у нас в приложении, приводит к появлению двух активных форм одновременно, дизайнер и та форма, откуда дизайнер вызвался. Приходится блокировать приложение на момент работы дизайнера, однако после закрытия FastReport, фокус обратно в приложение вернуть можно только шаманскими методами.
И еще, в дизайнере, редактирование формы скорее не работает, чем наоборот. Мало того, что форма торчит поверх всех окон, так еще и диалоги редактирования (SQL, алиасы полей) появляются под ней. Это вообще ни в какие ворота.
FastReport 3.03 живет в dll, среда CBuilder6. Операционки разные Win2k, XP.
Кто хочет посмотреть, как будет работать дизайнер в "честном" модальном режиме, можете поменять frxClass.pas (убрать цикл и поставить designer.ShowModal).
Кто хочет посмотреть, как будет работать дизайнер в "честном" модальном режиме, можете поменять frxClass.pas (убрать цикл и поставить designer.ShowModal).
Ну зачем же так сразу.
Просто можно это сделать несколько иначе:
Это, кстати, решит проблему, когда при запущеном дизайнере нужно "свернуть" все приложение...
И еще вопрос. Парольная защита отчета - это штука полезная. Но вот если бы я хотел запретить печать какого-либо отчета я бы его зашифровал. А вот та реализация пароля, которая сейчас есть в FR3 больше подходит для защиты модификации "честными" пользователями. Это я к тому, что пароль должен запрашиваться не при попытке загрузить шаблон в frxReport, а при попытке вызвать frxReport.DesignReport при загруженном парольном шаблоне. Можно даже сделать два отдельных пароля (как в ворде)...
Am i right?
Только, plz, не надо меня по этому вопросу футболить к свойству Restriction или как оно там...
Еще. Нельзя ли сделать возможным установку Parent-а для объектов форм отчета хотя бы через перетаскивание на родителя в дереве объектов отчета (как в Delphi). А то для того, чтобы поместить CheckBox на GroupBox пришлось править *.FR3 (ХВАЛА XML! ) Кстати, этот самый Parent "слетел" после Copy/Paste...
К слову. В Delphi 6+ компонент CheckListBox вынесен в пакет VCLX. Соответственно в пакетах FR3 этого VCLX не хватает в секции requires...
По совету автора пошёл путём программной доработки дизайнера, наследника так сделать и не удалось . Нужно было несколько пунктов в меню "Файл" добавить(не в конец меню). Добавил, всё шло хорошо, до тех пор пока не пришлось пару раз шаблон из файла загрузить. Оказалось, что при загрузке файла исчезает верхний разделитель блока ранее открытых файлов (SepMI11). Он попросту удаляется. Соответственно возникает ошибка.
Определи метод он сохранить.
а теперт нажми сохранить как в дизайнере и что сохраняется??
я не переопределял метод сохранить как
занчит он должен работать нормально..
я уже посылал где у вас exit не правильно стоит.
почему поле сохраненого отчета в 2.53 нужно все править.
на
[SUM(<Q."REXSUMM_HOT">+<Q."REXSUMM_HEAT">)]
И есть ли спопобоб не запуская отчет проверить везде ли правильные
скобки... а то ждать пока выполнится тяжелый запрос
по 5 минут а потом исправить одну ячейку... это утомительно.
Потому что в FR3 квадратные скобки "заняты" скриптом для передачи параметров типа "массив".
Ну почему при сохранение в 2.53 версии она сохранет квадратные скобки??
это то можно было сделать... чтобы после загрузки в 3
не править эти скобки
Конвертер 2->3 не настолько интеллектуален, чтобы менять одни скобки на другие. Для этого пришлось бы делать полный разбор синтаксиса выражений и синтез их обратно. И все равно, что-нибудь пришлось бы править вручную.
Создал я проект, все нормально работает, добавляю на форму frxDataSet и frxReport, компилирую и при запуске приложение возникает ошибка
Exception EReadError in module xxxxxxxx.exe at XXXXXXXXXX.
Error reading frxDBDataSet.GroupIndex: Property GroupIndex does not exist.
в чем дело ?
Надо открыть все модули проекта, где используются компоненты FR3, ответить Ignore all и сохранить. Это св-во было по ошибке добавлено всем компонентам в 3.01.
Комментарии
Нету: скролинга клавишами и колесом мыши.
Попутно, хотелось бы иметь возможность в Preview показывать/прятать тот же Toolbar и меню, что и во встроенном.
Тулбар показать нельзя, это часть формы, а не TfrxPreview.
Почему бы честно не сказать, криво - будем править?
Report.DataSet.First;
while not Report.DataSet.Eof do
begin
DoPages;
Report.DataSet.Next;
end;
При этом в вызываемой внутри цикла в процедуре DoPages, которая в свою очередь вызывает процедуру procedure TfrxEngine.RunPage(Page: TfrxReportPage), происходит установка на начало набора FPage.DataSet.First;(frxEngine, Line 986).
Как результат - бесконечный цикл.
Среда Delphi5.
Вроде делаю всё правильно, если не прерывать- всё нормально происходит.
И ещё раз к автору - нельзя вынести опционально процесс формирования отчёта :
- либо выводить модальное окно с отображением - сколько страниц сформировано
- либо оставлять в текущем варианте - изменение надписи Отмена\Закрыть
1) C++Builder 6, FR 3.02
frxReport1->PrintOptions->ShowDialog = false; - НЕ РАБОТАЕТ
Диалог показывается всегда. Пробовал менять как в дизайнере, так и в run-time.
После нескольких попыток изменения свойства ShowDialog в дизайнере, при попытке выполнить frxReport1->ShowReport(); получаю AV.
2) Delphi 5, FR 3.02
frxReport1.PrintOptions.ShowDialog := False; - в run-time работает, а в дизайне - НЕТ.
Совсем плохая ситуация. Посмотрели Fr 2.4, FR3 купили, а у него не работают базовые функции...
Может купившим FR3 можно получить FR 2.5 бесплатно ???
На форме есть frxReport1 и frxPreview1.
Во время печати (frxReport1->Print() на превьюшке появляется окно с надписью "Printing Page 1". После печати это окно не пропадает, а превьюха превращается в серый квадрат с этим окошком посредине.
Как это лечить ???
По поводу последнего вопроса - постараюсь сделать, но не обещаю что скоро.
frxPreview1->Print();
Но пусть, просто будем знать.
Только вышеописанная ситуация - это баг, и его надо фиксить.
При использовании превью нажатие Ctrl+P всегда вызывает диалог печати.
Как это отключить ?
А из каких соображений в FR3 окно дизайнера перестало быть модальным? Дело в том, что в том виде как сейчас есть вызванный из IDE дизайнер можно свернуть и, например, удалить редактируемый в данный момент frxReport с формы... Только не надо мне говорить, что этого просто не надо делать!
Вообще как-то странно выглядят все эти манипуляции с ActiveForm.Enabled в frxReport.DesignReport...
Что гораздо более неприятно в приложении с MDI интерфейсом после закрытия дизайнера, вопреки хэлпу от Borland, вызов f.SetFocus не выполняет установку Screen.ActiveForm (он становится равным nil/NULL). В итоге нужно переключиться на другое приложение и вернуться или открыть и закрыть другую форму этого-же приложения (благо меню и все остальное работает), чтобы можно было продолжить работу. Т.е. дочернее MDI окно, которое было активно в момент вызова дизайнера, после закрытия последнего остается недоступным.
PS. С SDI не проверял. Preview работает нормально. Среда BCB6. FR 3.03
И еще, в дизайнере, редактирование формы скорее не работает, чем наоборот. Мало того, что форма торчит поверх всех окон, так еще и диалоги редактирования (SQL, алиасы полей) появляются под ней. Это вообще ни в какие ворота.
FastReport 3.03 живет в dll, среда CBuilder6. Операционки разные Win2k, XP.
Просто можно это сделать несколько иначе: Это, кстати, решит проблему, когда при запущеном дизайнере нужно "свернуть" все приложение...
И еще вопрос. Парольная защита отчета - это штука полезная. Но вот если бы я хотел запретить печать какого-либо отчета я бы его зашифровал. А вот та реализация пароля, которая сейчас есть в FR3 больше подходит для защиты модификации "честными" пользователями. Это я к тому, что пароль должен запрашиваться не при попытке загрузить шаблон в frxReport, а при попытке вызвать frxReport.DesignReport при загруженном парольном шаблоне. Можно даже сделать два отдельных пароля (как в ворде)...
Am i right?
Только, plz, не надо меня по этому вопросу футболить к свойству Restriction или как оно там...
К слову. В Delphi 6+ компонент CheckListBox вынесен в пакет VCLX. Соответственно в пакетах FR3 этого VCLX не хватает в секции requires...
если двойной щелчек по слову выделялось только конкретно это слово
а не все что находится в квадратных скобках.
а теперт нажми сохранить как в дизайнере и что сохраняется??
я не переопределял метод сохранить как
занчит он должен работать нормально..
я уже посылал где у вас exit не правильно стоит.
на
[SUM(<Q."REXSUMM_HOT">+<Q."REXSUMM_HEAT">)]
И есть ли спопобоб не запуская отчет проверить везде ли правильные
скобки... а то ждать пока выполнится тяжелый запрос
по 5 минут а потом исправить одну ячейку... это утомительно.
это то можно было сделать... чтобы после загрузки в 3
не править эти скобки
Exception EReadError in module xxxxxxxx.exe at XXXXXXXXXX.
Error reading frxDBDataSet.GroupIndex: Property GroupIndex does not exist.
в чем дело ?