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

MiniGui and FastReport ?

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

Ответов - 16

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 без "заморозки" основной программы ?

Andrey: Что-то не могу получить читаемый украинский текст в FastReporte. Одни кракозябы... Давно работал с FastReporte и подзабыл как задать кодировку базы для UA1125 Нашёл у себя в исходниках только такое: [pre2] FrPrn:SetWorkArea( ALIAS(), SELECT(), .T. ) // .T. для OEM-кодировки БД FrPrn:SetWorkArea( ALIAS(), SELECT(), ) // для RU1251-кодировки БД[/pre2] Подскажите пожалуйста как поменять кодировку базы для вывода UA1125 ?

SergKis: Andrey пишет Может пробнуть с charset для ua как я использовал для LV [pre2] DEFINE FONT Arial FONTNAME App.FontName SIZE App.FontSize CHARSET 186 // BALTIC_CHARSET DEFINE FONT ArialBold FONTNAME App.FontName SIZE App.FontSize BOLD CHARSET 186 // BALTIC_CHARSET DEFINE FONT ArialRu FONTNAME App.FontName SIZE App.FontSize CHARSET 204 // RUSSIUN_CHARSET DEFINE FONT ArialRuBold FONTNAME App.FontName SIZE App.FontSize BOLD CHARSET 204 // RUSSIUN_CHARSET SET FONT TO ArialRu, 11 [/pre2]

Dima: Andrey пишет: FrPrn:SetWorkArea( ALIAS(), SELECT(), .T. ) через эти фичи похоже ни как [pre2] //////////////////////////////////////////////////////////////////////////// // SetWorkArea() - Add WorkArea or modify params of WorkArea. // sFrAlias - any string that will represent WorkArea in FR // nWorkArea - number of WorkArea // lOem - data in oem codepage (default - .f.) // aRangeParams - Range Params. Array with 3 elements: // 1 element - FR_RB_FIRST(0) or FR_RB_CURRENT(1) // 2 element - FR_RE_LAST(0) or FR_RE_CURRENT(1) or FR_RE_COUNT(2) // 3 element - A number of records in the WorkArea, // if the second element = FR_RE_COUNT. // Default - {FR_RB_FIRST, FR_RE_LAST, 0} //////////////////////////////////////////////////////////////////////////// [/pre2]

Andrey: Выкрутился по простому. Создал PUBLIC переменные, а на форму Фастрепорта вывожу так [GetHbVar('cPubL1')] Через массив муторно выводить на форме, уже есть неприятный опыт. Украинский язык в Фастрепорта появился. Ну и до кучи подгружаю ресурсы укр.языка в ресурсы Фастрепорта, вообще все стало на украинском.

Andrey: Можно по другому делать, указать фонт вывода поля, т.е. его кодировку, но в моём ФастРепорте нет украинского UKRAIN_CHARSET Вот так можно менять кодировку полей базы:



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