Re: FastReport for FoxPro (тестирование и реализация) | |
---|---|
SergeySpirin Автор Сообщений: 203 Откуда: Москва Дата регистрации: 20.07.2010 |
Да, спасибо, уже сам увидел и поправил.
Ясно, пожалуй действительно имеет смысл вытащить все определения в fastrepf.h. Сделаю.
Конвертер завтра с утречка могу собрать. Это отдельный unit (pas-файл), при подключении дает возможность открывать frf-ы двойки в дизайнере. Но конвертит с некоторыми искажениями (размеры, пропорции) из-за разницы в технологии ядер двойки и тройки.... Насчет мануала, собираюсь здесь в этом топике, по крайней мере, общие вещи описать. В принципе, в fastrepf.pas основные методы кратко прокомментированы на английском. Есть дока моих клипперных версий, на 60-80% методы одинаковы. Ну а по Фасту, дока самого Фаста.... Евгений, а не хотите сами заняться этим демо-приложением? Сделать его похожим на типа "solutions"? У меня все-таки желание, чтобы демка и ее код выглядели профессионально с точки зрения фоксовика. --- Spirin Sergey. "Paritet Soft" Company. FRH sales: www.paritetsoft.ru FRAX sales: www.paritetsoft.ru ![]() |
Re: FastReport for FoxPro (тестирование и реализация) | |
---|---|
Dag Сообщений: 1156 Дата регистрации: 08.02.2006 |
Win 7 Максимальная
VFP 9 SP2 ver 09.00.0000.5815 При запуске ADO and Carts - ошибка Появляется и при запуске exe-файла и при запуске проекта из среды VFP, то же при замене файла 24.fr3[attachment 11163 ADOCharts.PNG] ![]() |
Re: FastReport for FoxPro (тестирование и реализация) | |
---|---|
SergeySpirin Автор Сообщений: 203 Откуда: Москва Дата регистрации: 20.07.2010 |
Ok. Значит все-таки повторяется... Dag, если не трудно, сделайте для теста следующее: -Зайдите в дизайнер (на другом отчете) -Нажмите "Новый отчет" -На вкладке "Данные" положите новый AdoDatabase. -Двойной клик на AdoDatabase и попробуйте подключится к какому-нибудь источнику данных (какие есть на машине ![]() -Если все нормально, то попробуйте подключиться Jet-ом к той же demo.mdb или к чему-нибудь еще... Попытаемся понять, дело в ADO, в конкретном провайдере, наличие-отсутствии какой-либо версии Access или еще в чем... Access, кстати, какой-то установлен? Спасибо. ![]() |
Re: FastReport for FoxPro (тестирование и реализация) | |
---|---|
Евгений Банщиков Сообщений: 235 Откуда: Kurgan Дата регистрации: 09.04.2004 |
В принципе можно и занятся, пишите в личку или на майл ( al_fa(собака)mail.ru ) , обсудим этот вопрос Исправлено 1 раз(а). Последнее : Евгений Банщиков, 02.12.10 07:18 ![]() |
Re: FastReport for FoxPro (тестирование и реализация) | |
---|---|
Pliskin Сообщений: 2959 Откуда: Новосибирск Дата регистрации: 19.11.2003 |
Про ADO and Carts
Просто в файле 24.fr3 поставил относительный путь "Data Source=DATA\demo.mdb" и все работает! ![]() |
Re: FastReport for FoxPro (тестирование и реализация) | |
---|---|
SergeySpirin Автор Сообщений: 203 Откуда: Москва Дата регистрации: 20.07.2010 |
Да у меня на всех компах тоже так ![]() ![]() |
Re: ANN: FastReport for FoxPro (beta candidate 1) | |
---|---|
SergeySpirin Автор Сообщений: 203 Откуда: Москва Дата регистрации: 20.07.2010 |
Обновил сборку.
- Добавлена возможность открывать файлы 2-й версии Фаста (frf) дизайнером и, соответственно, сохранять их в fr3. - Все пользовательские define-ы вынес в файл fastrepf_h.h Скачивать по той же ссылке, что в анонсе. Исправлено 1 раз(а). Последнее : SergeySpirin, 02.12.10 11:41 ![]() |
Re: FastReport for FoxPro (тестирование и реализация) | |
---|---|
SergeySpirin Автор Сообщений: 203 Откуда: Москва Дата регистрации: 20.07.2010 |
Теперь попытаюсь описать, по крайней мере, основные моменты FrFox.
- Во-первых, о доке. Еще раз повторюсь, FrFox - это чистая Win32 (VCL) реализация. Просто сегодня уже были попытки читать доку по FastReport.Net ![]() Доку, которой можно/нужно будет пользоваться можно разделить на 2 части, это дока самого FastReport и моя (будущая) дока в разрезе Фокса. Итак Дока по FastReportVCL: fast-report.com В основном, нужно будет "Руководство пользователя", которое описывает принципы построения отчетов и работу с дизайнером (сегодня у них была объявлена профилактика на сайте ![]() www.fast-report.com Моя дока будет объединена с докой по клипперным вариантам: www.paritetsoft.ru Процентов на 60% дока будет совпадать с клипперной докой (единственное, у клиппера объектный синтаксис другой), поэтому при желании можно что-то смотреть и сейчас. - Комплектация FrFox будет состоять из 4-х файлов: FrSystF.dll - собственно FastReport fr.fll - FoxAPI библиотека fastrepf.prg - Исходник FrReportManager-объекта fastrepf_h.h - определения констант Для разработки, понятно, нужны все файлы. Включите в проект все файлы кроме FrSystF.dll. Для распространения программы просто включите FrSystF.dll и fr.fll в ваш ран-тайм. - Инициализация и финализация Чтобы начать работать с FastReport в программе необходимо создать экземпляр класса frReportManager, например:
Если вы "запрятали" fr.fll и FrSystF.dll или переименовали их, то укажите пути к ним вторым и третьим параметрами:
Чтобы закончить работу с FastReport, просто уничтожте объект oFr:
----- Продолжу минут через 10 ![]() Исправлено 1 раз(а). Последнее : SergeySpirin, 02.12.10 20:06 ![]() |
Re: FastReport for FoxPro (тестирование и реализация) | |
---|---|
SergeySpirin Автор Сообщений: 203 Откуда: Москва Дата регистрации: 20.07.2010 |
- Определение наборов данных для отчета
FrFoх "заточен" на использование данных Fox-приложения и это считаем главным. Возможность использовать ADO в FrFox-е независимо от фокс-приложения будем считать возможностью факультативной и рассмотрим как-нибудь позднее. Итак, определить набор данных можно несколькими способами: 1. Кодом. Метод:
Добавляет любую рабочую область FoxPro (таблица, курсор, представление и т.д.) в FrFox. Обязательные параметры: cFrAlias - просто строка под которой набор данных будет идентифицироваться для Fast-а (НЕ фоксовский алиас!). Может быть русским словом и содержать пробелы. nWorkArea - номер рабочей области FoxPro. Необязательные параметры: lOem - флаг, что талица в oem(dos)-кодировке, по умолчанию .f. nRangeParam1, nRangeParam2, nRangeParam3 - три параметра, определяющие диапазон записей в наборе. nRangeParam1 - может быть FR_RB_FIRST(0) или FR_RB_CURRENT(1), то есть, начинать либо с первой записи, либо с текущей. nRangeParam2 - может быть FR_RE_LAST(0) or FR_RE_CURRENT(1) or FR_RE_COUNT(2), то есть либо идти до последней, либо текущую считать последней, либо отсчитать какое-то количество записей. nRangeParam3 - если nRangeParam2 = FR_RE_COUNT(2), то третий параметр и есть это количество. По умолчанию - (FR_RB_FIRST, FR_RE_LAST, 0) Константы FR_XXX определены в fastrepf_h.h. Например:
Посмотрите последовательность действий после этого кода в этом ролике: www.fast-report.com ----- Про второй способ в следующем посте. Исправлено 4 раз(а). Последнее : SergeySpirin, 03.12.10 10:18 ![]() |
Re: FastReport for FoxPro (тестирование и реализация) | |
---|---|
SergeySpirin Автор Сообщений: 203 Откуда: Москва Дата регистрации: 20.07.2010 |
- Определение наборов данных для отчета (2-й способ)
2. Второй способ определения набора - это определить его в самом отчете. Для этого запустите дизайнер и перейдите на страницу "Данные". Слева на панели компонентов найдите компонент FoxWorkArea и поместите его на страницу. Основные свойства компонента FoxWorkArea: AlreadyUSE - ключевое свойство, по умолчанию .t., то есть, компонент будет считать, что рабочая область уже открыта в Фокс-приложении и будет просто из нее читать данные. Если значение .f., то компонент будет открывать рабочую область командой USE сам, обратите внимание, что открывать он ее будет через Фокс-приложение. Свойство TableName должно быть в этом случае не пусто и задавать открываемую таблицу. Alias, WorkArea - фоксовские алиас и номер рабочей области. Если AlreadyUSE = True, то, если Alias задан, то компонент обращается к рабочей области по этому алиасу. Если задано WorkArea, то обращается по номеру. Если заданы оба, то приоритет у WorkArea. Если AlreadyUSE = False, то компонент будет открывать таблицу TableName в рабочей области WorkArea под алиасом Alias. ----- В чем разница между компонентом в самом отчете и методом SetWorkArea()? SetWorkArea() задает для FrFox, так называемый, глобальный набор данных. То есть, после вызова SetWorkArea() FrFox будет "знать" об этой рабочей области до тех пор пока вы не скажете ему "забудь" о ней (как - чуть далее) ![]() Определение же через FoxWorkArea локально для конкретного отчета. В "болванке" демы в отчете "More Complex" данные определяются через SetWorkArea(), а в "More Complex in FR" через компоненты FoxWorkArea. ------ ![]() |
Re: FastReport for FoxPro (тестирование и реализация) | |
---|---|
SergeySpirin Автор Сообщений: 203 Откуда: Москва Дата регистрации: 20.07.2010 |
Рассмотрим ряд технических методов, а потом вернемся к еще одному способу определить набор данных.
Подготовка и показ отчетов DesignReport() - вызывает дизайнер для текущего отчета, без параметров, пример
PrepareReport(lNotClearLastReports) - строит отчет, но не визуализирует его никак. lNotClearLastReports - флаг, означающий, очищать ли предыдущий отчет или добавлять новый к предыдущему. По умолчанию .f. Пример:
ShowPreparedReport() - открывает предпросмотр и показывает уже построенный отчет(ы). Пример:
ShowReport(lNotClearLastReports) открывает предпросмотр и, если отчет еще не строился, то строит его и показывает. Пример:
Загрузка/Сохранение LoadFromFile(cFileName) - загружает ранее сохраненный отчет из файла
LoadFromResource(xValue) - загружает ранее сохраненный отчет из ресурса exe-шника приложения. Не знаю как в Фоксе, но клипперисты очень любят в небольших программах "складывать" отчеты в ресурсы своего exe-файла. Ресурс должен быть типа RC_DATA. xValue - либо числовой, либо строковый идентификатор ресурса.
LoadFromBlob(nWorkArea, cFieldName) - загружает ранее сохраненный отчет из memo- или blob-поля открытой рабочей области.
LoadFromString(cStringVal) - загружает ранее сохраненный отчет из, просто, строки
--- SaveToFile(cFileName) - сохраняет отчет в файл
SaveToBlob(nWorkArea, cFieldName) - сохраняет отчет в memo- или blob-поля открытой рабочей области, в текущую запись.
SaveToString() - возвращает отчет как строку.
![]() |
Re: FastReport for FoxPro (тестирование и реализация) | |
---|---|
SergeySpirin Автор Сообщений: 203 Откуда: Москва Дата регистрации: 20.07.2010 |
Здравствуйте!
Очень извиняюсь, что "пропал". В последние несколько дней получил несколько писем с вопросами о том, будет ли проект продолжаться. Еще раз простите, пропал я по нескольким объективным причинам. Были новогодние праздники, а потом, в связи с событиями в Египте (да и вообще на ближнем востоке и в северной африке), состоялся "завал" на основной работе... Собственно, я не торопился, так как хотел, честно говоря, выход FrFox приурочить уже к пятерке FastReport. Но сейчас объявлено, что выпуск пятой версии задерживается и ждать ее можно только где-то летом.. Продукт будет, это 100%. Сейчас, на момент паузы, он сделан на процентов 95%. Евгений Банщиков сделал большое демо. Юра Скляров работает над конвертилкой Fox-отчетов в отчеты Фаста. Еще раз извините за задержку. Со следующей недели я в проект возвращаюсь, и возможно приму решение делать релиз на 4-ой версии... Спасибо за интерес. -- Спирин Сергей. Компания "Паритет Софт". ![]() |
Re: FastReport for FoxPro (тестирование и реализация) | |
---|---|
SergeySpirin Автор Сообщений: 203 Откуда: Москва Дата регистрации: 20.07.2010 |
Здравствуйте,
Продолжу накидывать краткое описание функционала. В основном форуме есть вопрос по вызову Фокса из отчета. "Зайдем с этой стороны". FastReport содержит в себе подстистему FastScript, которая поддерживает 4 синтаксиса: Pascal, C++, Basic и Java. По умолчанию - Pascal. Подробнее об этом см. Руководство пользователя. В мемах отчета, по умолчанию, исполняемые выражения обрамляются квадратными скобками (можно переопределить), то есть, если вы в мемо напишите: 2 + 2 , то в предпросмотре так и увидите строку '2 + 2'. Если же напишите [2 + 2], то увидите 4 ![]() На правой панели инструментов выберите вкладку "Функции" и найдите узел "Visual FoxPro". Здесь вы увидите список FastScript-функций, которые делают доступным в отчете весь функционал FoxPro. Опишем эти функции: CallFoxFunc() - вызывает любую Fox-функцию или метод объекта и возвращает результат. Полный синтаксис в Паскале будет: function CallFoxFunc(FoxFunc: string; AParam: Variant = EmptyVar): Variant. То есть, первый параметр строковый - это имя вызываемой функции, либо имя объекта-точка-имя метода. Второй параметр - вариантный массив параметров для функции или метода (пишется в квадратных скобках). Если вызываемая функция не имеет параметров, то второй параметр опускается. Возвращает Variant, то есть, переменную любого типа. Примеры в мемах: [CallFoxFunc('ImFoxFunc', [10000])] [CallFoxFunc('Transform', [221156.78, '99,99,99,999.99'])] [CallFoxFunc('oTestObj.FoxMethod', ['блa-бла', 25])] [CallFoxFunc('MyFoxSumPropis', [Memo8.Value])] Evaluate() - полностью аналогично Фоксовкой EVALUATE(). То есть, вычисляет символьное выражение и возвращает результат. Пример в мемо: [Evaluate('Version(1)') + Evaluate('Version(4)')] Execute() - Компилирует и выполняет любую команду или функцию, которую можно выполнить из окна Command. Один строковый параметр, который и задает эту команду или функцию. Ничего не возвращает, поэтому в мемах использовать смысла нет, зато хорошо использовать в обработчиках событий, то есть в коде, например:
То есть, в этом примере мы перед построением отчета установили relation, а закончив построение отчета relation сняли. И далее, опишу остальные коротко: GetFoxVar(), GetFoxArrayVar(), GetFoxObjVar() - получение значений Фоксовых переменных, элементов массивов и свойств объектов. Примеры: [GetFoxVar('DataDir')] [GetFoxObjVar('oTestObj', 'TestProp')] SetFoxVar(), SetFoxArrayVar(), SetFoxObjVar() - присвоение значений Фоксовым переменным, элементам массивов и свойствам объектов. Пример в скрипте:
LoadImageFromFoxVar(), LoadImageFromFoxRes - две технические функции, загружающие картинки из просто Fox-переменной, либо из ресурса exe-шника. Исправлено 1 раз(а). Последнее : SergeySpirin, 10.03.11 17:34 ![]() |
Re: FastReport for FoxPro (тестирование и реализация) | |
---|---|
SergeySpirin Автор Сообщений: 203 Откуда: Москва Дата регистрации: 20.07.2010 |
Если какие-то Фокс-функции используются часто и не хочется каждый раз писать CallFoxFunc(), то можно зарегистрировать в FastScript свои User-функции. Делается это так, после создания объекта frReportManager, надо назначить обработчик события OnUserFunction (функция или метод) методом SetEventHandler(). Далее, добавить функцию методом AddFunction(). Ну и реализовать назначенный обработчик. Например, добавим фоксовскую Str() под именем FoxStr():
Теперь в мемо можно написать типа: [FoxStr(10.1467, 10, 2)] SetEventHandler() - метод универсальный. 1й параметр - имя Фастовского объекта, 2й - Имя события, 3-й фокс-функция или метод, который будет обработчиком. AddFunction - 1й параметр - объявление функции в синтаксисе Паскаль. 2й - имя узла дерева на панели "Функции", 3й - комментарий внизу на панели. Остальное в коде, я думаю, понятно. Исправлено 1 раз(а). Последнее : SergeySpirin, 10.03.11 22:30 ![]() |
Re: FastReport for FoxPro (тестирование и реализация) | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
Нормально, спасибо. Если придется использовать только. (1С-ник я теперь, хотя не зарекаюсь
![]() ------------------ Часто бывает так, что есть над чем задуматься, а нечем. ![]() |
Re: FastReport for FoxPro (тестирование и реализация) | |
---|---|
SergeySpirin Автор Сообщений: 203 Откуда: Москва Дата регистрации: 20.07.2010 |
Да не за что, совсем. ![]()
![]()
Как, кстати, в 1С "с высококачественным генератором отчетов" дело обстоит? ;) ![]() |
Re: FastReport for FoxPro (тестирование и реализация) | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
Нормальный такой генератор, тока писать иногда надо много
![]() ------------------ Часто бывает так, что есть над чем задуматься, а нечем. ![]() |
Re: FastReport for FoxPro (тестирование и реализация) | |
---|---|
h.i.a. Сообщений: 4004 Откуда: Мурманск/Спб/Мск Дата регистрации: 18.11.2005 |
Сергей, три вопроса по сабжу.
1. Будет ли доступно редактирования отчетов в рантайм, как это реализовано в связке Delphi+Fast Report, чтобы конечные пользователи программы могли проводить "косметические" изменения отчетов под свои нужды? 2. Во сколько кровных шэкелей обойдется лицензия для фокс-разработчика? 3. Требуется ли дополнительное лицензирование для использования на клиентских машинах? Последние пару недель веду подготовку к новому проекту, формализую требования, проектирую модель БД и, в том числе, выбираю оптимальные инструменты для реализации идей. Пока остановился на связке VFP+Firebird, осталось разобраться с генератором отчетов. ------------------ Исправлено 1 раз(а). Последнее : h.i.a., 22.05.11 17:41 ![]() |
Re: FastReport for FoxPro (тестирование и реализация) | |
---|---|
SergeySpirin Автор Сообщений: 203 Откуда: Москва Дата регистрации: 20.07.2010 |
Привет.
Да, конечно, на использование дизайнера никаких ограничений не накладывается.
Фаст лицензируется "по разработчику". Разработчик "будет стоить" где-то в районе 10000 рублей. Может, с выходом пятерки чуть подорожает. Клиентских машин это никак не касается.
30-31 мая буду в Ростове на конференции FastReport, посвященной выходу пятой версии. Там, кстати, будет и наверное все "русское крыло" Firebird-а ![]() ![]() www.fast-report.com ![]() |
Re: FastReport for FoxPro (тестирование и реализация) | |
---|---|
h.i.a. Сообщений: 4004 Откуда: Мурманск/Спб/Мск Дата регистрации: 18.11.2005 |
Однако ценник кусается ![]() Ладно, будем думать. Есть ли возможность ознакомиться с предварительной/демо версией программы? В Firebird я пока совсем новичок, выбрал из-за компактности системы и простоты установки/настройки, но в ущерб функциональным возможностям. По сравнению с первоначально выбранным PostgreSQL возможности Firebird слегка удручают, но PostgreSQL - тяжеловес, в качестве сервера БД для компактной и автономной программы не подходит, к нему в комплекте сисадмин нужен ![]() Сергей, можно ли поинтересоваться у "русского крыла", планируют ли они таки добавить поддержку типа данных boolean, эмуляция через char(1) или smallint выглядит в 2011 году достаточно странным решением. Даже 1C в восьмерке ушли от кошмарного if my_logic_value=1 ![]() ------------------ ![]() |
© 2000-2025 Fox Club  |