Форум » GUI » MiniGui and FastReport ? » Ответить

MiniGui and FastReport ?

Andrey: Всем привет ! Столкнулся с баальшоой непоняткой в связке МиниГуи и Фастрепор. Некоторые формы вообще НЕЛЬЗЯ отредактировать, дизайнер вешает программу. Хотя при выводе в предпросмотр эта форма выводиться. Вот такие сообщения: Далее куча окон: Потом дизайнер: И всё - вешалка, нужно снимать прогу через Диспетчер задач. Хотя эта же форма нормально редактируется в терминалке Харбора (т.е. в старой задаче)... Форумы читал, таких ошибок полно, но решения не нашёл.. Таймер в МиниГуи как то влияет на Фастрепорт или нет ? Куда копать, что сделать ? P.S. После открытия других форм в дизайнере (несколько раз), эта форма (которая не открывалась) открывается в Дизайнере, но отредактировать любую графу нельзя ! Выдаёт такую ошибку: System Error. Code: 87. Параметр задан неверно.

Ответов - 11

Andrey: По переписывался по поводу этой ошибки со службой техподдержки FastReport. Помогли. Как расшифровать ошибку библиотеки на дельфи - FrSystH.dll ? Access violation at adress 100977B7 in module 'FastReport4xHrb.dll' Read of adress 00000180. http://citforum.ru/programming/delphi/delphi_bugs.shtml Эта форма у меня использует многомерный массив [12,9] Вывод этого массива, у меня на форме - [CallHbFunc('A20TextDim',[2,<DOLG_ABON."KTARIF">])] Что то Дизайнеру не нравиться этот массив. Причём заполнение этого массива осуществляю на МиниГуи - объекты GETBOX 12 штук и TAB 9-вкладок. Если эту форму заполнения массива не показывать на экране, то Дизайнер открывается нормально. // считать/записать переменные из формы для FastReport'a /* aPrnDim := PrnDim_A20(cFileCfg) IF LEN(aPrnDim) > 0 M->aPubTextDim := aPrnDim[1] // настройки массива страницы M->cPubTitleUp := aPrnDim[2] // настройки титула страницы M->aPubDateDo := aPrnDim[3] // настройки даты для страницы ELSE RETURN NIL ENDIF */ Что-то с массивами наверное или форма МиниГуи ломает форму FastReport ... Ставил рабочую форму FastReport в эту функцию, тоже не открывается в Дизайнере. Хотя там нет вызовов типа [CallHbFunc('A20TextDim',[2,<DOLG_ABON."KTARIF">])] Видать всё таки намудрил в форме заполнения PrnDim_A20() Хотя форма FastReport нормально печатается !

PSP: А обязательно массив использовать? Может dbf временный создать?

Andrey: PSP пишет: Может dbf временный создать? Конечно не обязательно. Просто так решил вначале, вроде удобно. Оказалось не очень. Конечно можно переделать и не париться. Но форма уже работает, правку не делаю, пускай так работает. Просто на будущее всем заметка - с многомерными массивами беда в FastReport и не нужно использовать их.

Andrey: Столкнулся с проблемкой.... В терминальной версии программы для формы печати использовал один и тот же алиас PLATA, т.е. открывал базу допустим plat2016 под алиасом PLATA и одна форма использовалась для всех годов. Сейчас в новой программе открываю сразу все базы: plat2015, plat2016, plat2017 под алиасами: PLAT2015, PLAT2016, PLAT2017 И одну форму НЕЛЬЗЯ использовать, потому что в форме Fastreport предусмотренно использование обращение к полям базы типа [PLATA."RC"], [PLATA."DOCUM"] и т.д. Т.е. придётся делать формы для каждого года отдельно, что очень не правильно. Можно ли как то передать алиас базы PLAT2015 в форму как алиас PLATA ? Кто нибудь сталкивался с такой проблемой ?

Dima: Andrey Форма Fastreport это ведь функция ? Если так то можно в нее передавать нужный алиас и далее в ней вместо PLATA использовать переменную. Это просто моя догадка...

Andrey: Dima пишет: Форма Fastreport это ведь функция ? Нет, это FrSystH.dll в которой много чего сделано по умолчанию. Алиас базы передаётся так: [pre2] oFrPrn:SetWorkArea( ALIAS(), SELECT(), .T. ) // .T. для OEM-кодировки БД [/pre2] Вместо PLATA использовать переменную - не нашёл как ! В форме Фастрепорт (это обычный xml-файл) есть свой DataSetName="PLATA" - как его изменить не знаю. Там дизайнер свой собственный !

Andrey: Andrey пишет: В форме Фастрепорт (это обычный xml-файл) есть свой DataSetName="PLATA" - как его изменить не знаю. Поиск и замена в форме (файле xml-файл) напрямую через файловые функции - не даёт результата ! Пишет потом при запуске формы - ошибку:

PSP: Я бы сделал через временный dbf c алиасом PLAT и структурой, идентичной основным базам (PLAT*). Просто заполнял бы его перед печатью нужными данными, а потом удалял.

Andrey: PSP пишет: Я бы сделал через временный dbf c алиасом PLAT и структурой, идентичной основным базам (PLAT*). Просто заполнял бы его перед печатью нужными данными, а потом удалял. Это хороший вариант на небольшие выборки, наверное подойдёт, если не смогу по другому сделать ! Спасибо ! Но вот нашёл ещё один вариант, через сам Фастрепорт: [pre2]procedure Picture1OnBeforePrint(Sender: TfrxComponent); begin MasterData1.DataSet := 'PLAT' + IntToStr(GetHbVar('nPubYearImport')) end;[/pre2] Но что-то ругается...

Andrey: Оказывается можно это сделать в Фастрепорте ! В самом отчете при открытии сделать переназначение на существующий алиас PLATA. [pre2]procedure ReportHOnStartReport(Sender: TfrxComponent); begin // ShowMessage(GetHbVar('cPubAliasYearPlata')); PLATA.Alias := GetHbVar('cPubAliasYearPlata'); end; [/pre2] И ещё создать открытие базы PLATA через вкладку Данные: Вообще Fastreport прекрасный рисовальщик отчётов. Вопрос закрыт... Спасибо всем за участие !

Andrey: Всем привет ! Кто знает как открыть окно Fastreport без "заморозки" основной программы ?



полная версия страницы