Re: Как возвратить параметр из программы VFP? | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
В FPD-проге обычный RUN c именем VFP-exe, именем CONFIG'а и параметрами:
- программа - config - ресурсный файл (имя мы делали не foxuser, а vfoxuser, видимо, чтобы не было конфликтов версий) - библиотеки VFP (или их клали в SYSTEM32) Да, главное забыл - данные для отчетов передавали через DBF. Исправлено 2 раз(а). Последнее : akvvohinc, 23.01.21 19:18 |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Ну формально кое что регистрировать надо - просто обычно это не очень нужное... Поддержка контекстного хелпа (для приложений без интерфейса ну ваще не нужна, да и для полноценных приложений с "формочками" зачастую можно без этого спокойно обойтись). MSXML 4-й версии для XMLAdapter - тут уже интереснее - формально это абсолютно не фоксовый компонент, но вот как раз фоксовый компонент XMLAdapter не сможет без него работать - но и нужен он далеко не всегда. Раз уж говорилось про "провайдеры" - то oledb провайдеры и odbc драйвера для работы с большими СУБД как правило требуют установки в систему, а порой ещё и определённой настройки. Ну всякие активикс и иные "интересные" компоненты - те же библиотеки стыковок со сканерами штрихкодов, кассами и т.п. Ну да это, опять таки, к фоксу уже прямого отношения не имеет... ------------------ WBR, Igor |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
И в VFP прлностью формировали выходную форму или обрабатывали уже готовые результаты, полученные в FPD?
Просто любопытно, что именно вы "поручили" делать VFP? Я предполагаю, что в таблицу можно поместить все итоговые данные по выходной форме, а потом VFP "красиво" отформатирует и направит на печать выходную форму. |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Пока я писал вопрос, был дан ответ.
А что именно вы передавали через dbf? |
Re: Как возвратить параметр из программы VFP? | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Все, что должно было попасть в отчет. Помнится мы обходились двумя таблицами, но их структуры могли меняться в зависимости от вида отчета: 1) 1-я таблица из одной записи - поля заголовка и подвала 2) 2-я таблица соответствует области Detail (может, иногда таких таблиц было несколько - уже не помню) Не думаю, что кому-то важно, как именно передавали данные мы. Каков документ, такие и таблицы должны быть сформированы и переданы. Хотя никто не мешает, если это возможно и удобно, читать таблицы FPD-приложения прямо из VFP-программы, что-то с ними делать и бросать в отчет. Мы ничего, кроме вывода уже готового, в VFP не делали, данные целиком готовились в FPD - вся бизнес-логика находилась там, а VFP использовался как адаптер между FPD и принтером. |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Вот этот момент меня и интересовал. Я тоже так думаю - итоговые данные для выходной формы формировать в FPD, а непосредственно формирование "красивого" отчёта и печать - из VFP. Осталось только научиться делать такую обработку в VFP, поскольку никогда этим не занимался раньше. |
Re: Как возвратить параметр из программы VFP? | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Сложного ничего нет, но рисовать "красивые документы" может быть довольно трудоемко. Кроме того, перед выводом мы еще дополнительно обрабатывали файл отчета (открывая его как таблицу), подбирая размер шрифта в указанном диапазоне для некоторых полей таким образом, чтобы текст помещался в отведенное для него место (это описывалось с помощью некоторой нотации в Comment этого поля). Также можно было указать, что текст можно сокращать с помощью специальной функции (например, "специальная функция" --> "спец.функция"), если он не помещается в поле целиком, и еще какие-то манипуляции с текстом полей отчета, которые я уже подзабыл. Вот для целей определения ширины текста заданным шрифтом использовали свойство Label.width некоторой "невидимой" формы, заполняя этим текстом свойство Label.Caption и устанавливая для Label тот же самый шрифт - этот способ точнее, чем с помощью функций FONTMETRIC() и TXTWIDTH(). Но все это уже прямого отношения к взаимодействию FPD -> VFP не имеет, просто вспомнилось. Но раз ты отчеты в VFP не рисовал, вдруг пригодится хотя бы как идея. (а еще там есть ReportListener, но не знаю, стоит ли с него начинать - мне сразу не пришлось - он появился только в 9-ке). Исправлено 1 раз(а). Последнее : akvvohinc, 24.01.21 00:14 |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
"Красивый" готовый отчет в формате того же Excel имеется. С размерами и типами шрифтов тоже есть ясность. Останется, как думаю, построчное формирование данных из dbf-таблицы на лист Excel. При таком заполнении надо будет каким-то образом реализовывать такие вещи, как объединение столбцов, задание их ширины и высоты и т.д. Видимо, э о всё можно сдела ь средствами VFP? И речь идёт не об очень больших по объёму отчётах - обычно листов до 50 формата А4, не более того. Надо будет поэкспериментировать, когда текущие вопросы закончатся - эпидемия предоставляет свободное время. А как именно у вас происходил процесс печати "нарисованный формы"? Какой способ вы использовали? И как организовывали возврат в FPD? То есть как работали с событием "печать отчёта закончена" и "теперь вернуться в FPD"? Такая инфа интересна, потому как к тому или иному окончательном решению приходят, попробовав разные варианты. А у вас уже есть наработанный опыт. Вот думаю, может отдельный топик открыть с темой "Взамодействие FPD и VFP"?.. Исправлено 1 раз(а). Последнее : Simple777, 24.01.21 06:02 |
Re: Как возвратить параметр из программы VFP? | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Так что знать нужно скорее средства Excel, чем VFP - с точки зрения VFP, без разницы, каким "подсоединенным" объектом управлять. Печать отчета стандартна - REPORT FORM (с предпросмотром или без). Как такового "возврата в FPD" при вызове через RUN нет - твоя прога не будет "чего-то ждать", а продолжит выполнение. Если требуется "синхронность", ты сам должен ее организовать, например создавая/проверяя некие флаги - наличие открытой таблицы или определенной записи в таблице, или значения поля в записи, или значения байта в поле, просто наличие некоторого файла на диске или его содержимое, используя реестр Windows, Mutex - в общем, здесь тебя может ограничить лишь размер фантазии. Можно также не вызывать прогу напрямую, а делать это через BAT/CMD-файл. Тогда управление не вернется в прогу, пока этот bat не выполнится. Но в нем все равно что-то придется проверять, чтобы знать, когда выйти (поставь PAUSE - и управление не вернется в твою прогу, пока не нажмешь кнопку) Исправлено 2 раз(а). Последнее : akvvohinc, 24.01.21 13:57 |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Report Form вряд ли позволит сформировать лист Excel. Вообще формы я привык "с самого начала" делать вручную. Пробовал report в FPD - не понравилось. Я представляю себе формирование листа Excel из dbf-таблицы примерно так. В записи dbf-таблицы должны быть следующие данные: - номер столбца 1 (A, B, C, D...) - тип столбца (наверное, можно использовать "универсальное значение") - высота и ширина столбца 1 - содержимое столбца 1 - шрифт столбца 1 - размер шрифта столбца 1 ... - номер столбца N - содержимое столбца N ... Так образом можно сформировать весь лист Excel, записывая построчно каждый столбец. После этого перейти на следующую запись dbf-таблицы. Может быть, лучше будет добавить поле "номер строки" в dbf-таблицу с тем, чтобы формировать в Excel столбцы до тех пор, пока будет одинаковый "номер строки" в таблице dbf. После изменения "номера строки" перейти на формирование следующей строки в Excele. Это просто "общие соображения". А если нужен переменный колонтитул, то, наверное, придётся делать отчёт на разных листах книги Excel? Вряд ли Excel позволяет иметь переменные колонтитулы в пределах одного листа книги. Вообще-то, можно и в макросе Excel делать формирование отчёта из dbf-таблицы, загружая вместе с Excel заранее подготовленный шаблон документа (со встроенным макросом). Тогда и VFP не нужен будет - всё можно будет сделать при запуске Excel из среды FPD. Собственно, так я уже делал, но там была простейшая выходная форма с одним итогом в конце формы. В общем, надо экспериментировать. Исправлено 1 раз(а). Последнее : Simple777, 24.01.21 14:54 |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Taran Сообщений: 13625 Откуда: Красноярск Дата регистрации: 16.01.2008 |
Наврядли так делают что бы в дбф номер колонки, строки и оформление.
Я делаю шаблон со всем оформлением. В ячейках выражения типа двойных скобках. Значит это вычисляемое. Так же есть управляющие команды также обрамлены спец символами. Типа типа {{scan:_alias}} Т.е. данная строка будет ращмножена и заполнена с указанного алиаса. |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
А если, допустим, я заранее создам шаблон Excel (в смысле просто файл, содержащий шаблон в формате Excel), в котором будет описан шрифт, размер, ширина, высота, тип ячеек, то можно ведь просто в этот шаблон закинуть уже готовые значения из dbf-таблицы (или даже из формата sdf, если dbf новые версии Excel не поддерживают) посредством макроса (который также будет заранее записан в шаблоне документа). Вроде такое возможно? Исправлено 4 раз(а). Последнее : Simple777, 24.01.21 16:43 |
Re: Как возвратить параметр из программы VFP? | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Я описывал, что делали через VFP мы - "красивые отчеты" (FRX). Мы использовали 2 варианта работы с Excel: - заполнение шаблона (очень похоже на то, что описал выше Олег) - создание файла "с нуля" (никакого "автомата" мы не делали, но тоже использовался некий "конструктор" (примитивный язык), облегчающий заполнение ячеек. Наверно, хватило бы и первого способа, но он появился вторым. Исправлено 1 раз(а). Последнее : akvvohinc, 24.01.21 16:42 |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Ну дак вроде шаблон можно и непосредственно в Excele заполнить при помощи макроса и переданного экселю файла с готовыми данными? |
Re: Как возвратить параметр из программы VFP? | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Если тебе проще программировать в VBA чем в VPF, то наверно можно и так. Я DBF из Excel'я не читал, макросы, кроме самых примитивных, не писал, поэтому скорость/удобство такого способа оценить не могу. |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Taran Сообщений: 13625 Откуда: Красноярск Дата регистрации: 16.01.2008 |
Насчёт макросов я сразу отказался. Ибо делал типа "коробочный софт". И вопросы безопасности крайне щекотливы. Ну и мне проще из фокса раскидать данные по шаблону. Были некоторые отчёты где в таьличной части фигурировали данные из 5-7 курсоров с абсолютно разной структурой. По 2-3 строки в каждом курсоре. Но вывод последовательно на одном листе. ++ Ну и ещё. Делал один модуль и он прозрачно обрабатывал что офис от MS, что Libre или ещё какой. Соотв писать два макроса лениво. А так один шаблон под Excel, а его и Либра читает. Макросы может тоже, не пробовал или забыл. Исправлено 1 раз(а). Последнее : Taran, 24.01.21 17:17 |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Вот нечто похожее и у меня. Но мне казалось, что на одном листе не удастся разместить разноформатные данные, и придётся разделять на отдельные листы книги. Получается, что и шапки отчета при смене текущих листов у тебя менялись при необходимости? Насчёт макросов. Заказчики разрешают их исполнять. У тому же макровирусы вымерли лет 20 тому назад. ;) Исправлено 1 раз(а). Последнее : Simple777, 24.01.21 17:20 |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Taran Сообщений: 13625 Откуда: Красноярск Дата регистрации: 16.01.2008 |
Да нет, все на одном листе. Рвать нельзя ибо это один документ. И в фоксовом отчёте делал, даже когда не было такой штатной возможности.
Примитивно говоря: Фио, 2-5 штук. Отель - парочка. Самолёт. Экскурсии. Страховка. Пр.. |
Re: Как возвратить параметр из программы VFP? | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Видел такие - делают колонки в миллиметр шириной, а дальше объединением нужного их количества достигают требуемой ширины полей - и разные таблицы друг другу "не мешают". Исправлено 1 раз(а). Последнее : akvvohinc, 24.01.21 19:16 |
Re: Как возвратить параметр из программы VFP? | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Да, такую технологию видел в бланках налоговых деклараций. В принципе, можно и такой вариант проверить. |
© 2000-2024 Fox Club  |