Автор | Сообщение |
|
| |
Пост N: 2758
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.03.13 18:00. Заголовок: PAGESCRIPT 32 FOR (X)HARBOUR
Пытаюсь прикрутить PageScript 32 к проге на Harbour и облом. К проге на Xharbour прикрутил нормально (работает) Есть в TPSCRIPT.PRG (поставляется вместе с библой) #include "PScript.ch" #include "FileIO.ch" #ifdef __XHARBOUR__ // 02.06.2005 - IBTC - changed for xHarbour Builder: #xtranslate Method <Classname>:<x> => Method <x> #define DLL_STDCALL NIL #include "hbclass.ch" #else #include "Xbp.ch" #include "Dll.ch" #endif Harbour естественно не находит Xbp.ch , Dll.ch , не пойму что делать. =============================================== PAGESCRIPT 32 FOR (X)HARBOUR =============================================== This file contains important supplementary and late-breaking information that may not appear in the main product documentation. We recommend that you read this file in its entirety. In order to use PageScript 32 with (x)Harbour, you'll need to distribute PSCRIPT.DLL with your programs. We recommand that PSCRIPT.DLL be copied in the application's folder in order to avoid DLL versions conflicts. Three files needs to be included in your (x)Harbour projects : 1 - DLLCALL.C 2 - TPSCRIPT.PRG 3 - PSCRIPT.CH DLLCALL.C gives PageScript a way to call DLL functions in the same way as Xbase++ does. This interface is contributed by Paul Tucker, Ontario, Canada. Many thanks to him for this great contribution. TPSCRIPT.PRG contains all the PageScript 32 functions and one class, named TPageScript. You may either choose to call PS functions or instantiate TPageScript and use its methods. When you use functions, calling PSInit() automaticaly instanciates a Static TPageScript object. PSCRIPT.CH contains constants used by PageScript 32. Что то не пойму она будет вообще с Hаrbour работать http://www.abeelabs.com/pagescript32/index.php у меня версия 1.3.4.0
|
|
|
Новых ответов нет
, стр:
1
2
3
4
5
All
[см. все]
|
|
|
| |
Пост N: 6554
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.08.17 15:54. Заголовок: Кстати в сырцах Harb..
Кстати в сырцах Harbour глянь \core-master\extras\ps32\
|
|
|
|
| |
Пост N: 557
Зарегистрирован: 08.07.06
|
|
Отправлено: 30.12.17 22:40. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Ваши комментарии приветствуются |
| Добрый день. Разрешите неск. вопросов: 1) Взял бету с pagescript32.com, погонял тестовый пример - обратил внимание, что после закрытия Print Preview теряется фокус основного окна программы. Приходится возвращаться щелчком мыши или ALT+TAB. Это только у меня? Windows 7 x64. Можно вылечить? 2) Окно Print Preview можно как-то вызывать БЕЗ диалога выбора принтера? Долго искал, как посмотреть результат, не тратя бумагу, сохранял/переоткрывал pdf, пока не понял, что окно выбора принтера выскакивает, но вместо печати за ним идет просмотр... 3) На форуме _https://groups.google.com/forum/#!topic/harbour-users/gnUs9XMBygg некто Richard Visscher утверждает, что PageScript32 будет бесплатным для зарегистрированных пользователей. Что-то изменилось в ценовой политике с августа? Если нет - какие ждать цены, есть информация по предыдущим версиям ? Спасибо.
|
|
|
|
| |
Пост N: 6671
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.12.17 22:43. Заголовок: Тоже интересно..
Тоже интересно
|
|
|
|
| moderator
|
Пост N: 1225
Зарегистрирован: 11.02.10
|
|
Отправлено: 30.12.17 23:08. Заголовок: Sergy пишет: после ..
Sergy пишет: цитата: | после закрытия Print Preview теряется фокус основного окна программы |
| По-видимому, это проблемы взаимодействия с консолью. Для GUI-приложений такой проблемы нет. Sergy пишет: цитата: | вызывать БЕЗ диалога выбора принтера? |
| Нет, вызов этого диалога намертво зашит в pagescript DLL Sergy пишет: цитата: | Richard Visscher утверждает |
| Это новый собственник и разработчик PageScript32 Как он и обещал, он раздает первую публичную бетку DLL версии 3.4.0.105 бесплатно (как рождественский подарок ) Последующие версии, вероятнее всего, будут платными
|
|
|
|
| |
Пост N: 6672
Зарегистрирован: 17.05.05
|
|
Отправлено: 31.12.17 10:13. Заголовок: Sergy пишет: обрати..
Sergy пишет: цитата: | обратил внимание, что после закрытия Print Preview теряется фокус основного окна программы |
| чеканул с последней версией с сайта abeelabs , с фокусом все нормально
|
|
|
|
| |
Пост N: 559
Зарегистрирован: 08.07.06
|
|
Отправлено: 03.01.18 17:27. Заголовок: С некоторыми вопроса..
С некоторыми вопросами немного разобрался: + Если использовать gtwvg - с фокусом окна Preview все ок. Гуд + Посмотрел внимательнее - Preview вызывается без диалога принтера. Ничего там не "зашито". ? Сколько все-таки стоил PageScript в "свое время" и как лицензировался: по разработчику или по рабочим местам ? Возник следующий: Как-то уже "привык", что сначала я формирую какой-то отчет, а потом предлагаю юзеру - куда его вывести: на экран/принтер/в файл. Без разницы, что это: простой текст, XLS, PDF, DOC. PageScript заставляет указать устройство вывода заранее - ДО СОЗДАНИЯ самого тела документа. Логически я это понимаю: у разных устройств может быть разное разрешение, разные рабочие шрифты, соотв. документ МОЖЕТ выглядеть по-иному. Кто как решал данный вопрос? Пока что приходит в голову: вместо "прямых" вызовов PSSetFontSize(), PSLine(), PSFrame() и тп... накапливать их некий массив блоков кода, например так: вместо PSSetFontSize(5) => AADD(aQueue, {||PSSetFontSize(5)}) вместо PSLine(x1,y1,x2,y2) => AADD(aQueue, {||PSLine(x1,y1,x2,y2)}) и тп... после чего = запросить юзера, чего он хочет и "циклом по массиву" выполнить все вызовы. Но в этой идее не будут "работать" переменные - нужно заменить их конкретным значением в момент помещения в очередь... Коряво как-то... И непонятно, как тогда обрабатывать необходимые значения некоторых функций - например, ширину текста в пикселях... Что-бы придумать в такой ситуации? Хочется сохранить привычную логику работы программы, вне зависимости от типа документа.
|
|
|
|
| |
Пост N: 6677
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.01.18 17:42. Заголовок: Sergy пишет: и как ..
Sergy пишет: цитата: | и как лицензировался по разработчику или по рабочим места |
| Вот что удалось вытащить https://cloud.mail.ru/public/84NB/NTE4TahxH ЗЫ Цена была если мне память не изменяет где то в районе 200 $ (+-50 $)
|
|
|
|
| |
Пост N: 6678
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.01.18 19:30. Заголовок: Sergy пишет: PageSc..
Sergy пишет: цитата: | PageScript заставляет указать устройство вывода заранее - ДО СОЗДАНИЯ самого тела документа |
| Это можно обойти (если я верно понял вопрос) , так как устройство задается в PSBeginDoc , первым параметром. Поэтому можно до формирования тела документа , запросить доступные принтера + туда же в менюху сунуть и устройство (предпросмотра). На вскидку так , выкинь лишнее :) Скрытый текст #include "pscript.ch" Func Aprints(nm) local aprinters local bppm:=0 local i hb_default(@nm,"Выберите принтер") if Psinit()==0 aprinters:=APSGetPrinter() for i=1 to len(aprinters) aprinters[ i ]:=" "+aprinters[ i ]+" " next if len(aprinters)>1 bppm:=boxmenu(aprinters,; 10,20,11,21,nm,; Psgetdefprinter(),3,"bg+/b,n/gr*,,,w/b*") elseif len(aprinters)==1 bppm:=1 else soob("Не найдено ни одного принтера.....","r/r","gr+/r") endif else soob("PageScript не загружен...........","r/r","gr+/r") endif return bppm ************ Func APSGetPrinter() local ret:={} local nn:=PSGetPrinterCount() local i for i=1 to nn aadd(ret,PSGetPrinterNames(i)) next return ret
|
|
|
|
|
| |
Пост N: 560
Зарегистрирован: 08.07.06
|
|
Отправлено: 03.01.18 21:55. Заголовок: Dima пишет: Это мож..
Dima пишет: цитата: | Это можно обойти (если я верно понял вопрос) , так как устройство задается в PSBeginDoc , первым параметром. |
| Я не очень понятно объяснил, сорри... До знакомства с PageScript у меня было так: Сначала создается сам документ в виде файла (txt, xls, doc, pdf), а затем вызывается диалог с юзером, где предлагается: "куда его выводить: экран/принтер/файл". Стандартно и единообразно. Обработчик вывода на экран, скажем для txt и xls, разумеется, разные. Вот и сижу чешу репу, как быть: вместе с каждым документом, которые планирую готовить через PageScript придется переделывать логику диалога с юзером: сначала "куда выводить", потом формирование тела и собственно, вывод. А если юзер захочет сначала "на экран", а потом "на принтер" - тогда тело документа будет пересоздаваться дважды. А по ходу создания некоторых отчетов открываются/закрываются таблицы, устанавливаются фильтры/relation и куча прочей мути...
|
|
|
|
| |
Пост N: 6681
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.01.18 22:20. Заголовок: Sergy пишет: Снача..
Sergy пишет: цитата: | Сначала создается сам документ в виде файла (txt, xls, doc, pdf) |
| У меня иначе , для отчетов (к примеру) , вызывается диалог в котором задаются условия формирования и там же указывается формат отчета (txt, xls, doc, pdf) Надо будет мне доку полистать нового PS32 , может что то есть в этом плане , что тебе нужно.
|
|
|
|
| |
Пост N: 561
Зарегистрирован: 08.07.06
|
|
Отправлено: 03.01.18 22:44. Заголовок: Кстати заметил, что ..
Кстати заметил, что при любой ошибке в программе во время подготовки документа, дело завершается не только стандартным RTE, но и полным крэшем с созданием "hb_out.log", а Windows "пытается найти способ решения проблемы и предлагает обратиться к разработчику"... Половинчатое решение содержится в таком коде: * ----------------------- * EXIT PROCEDURE PS32Finish() // PSEndDoc() // RETURN Почему половинчатое? Потому что недокументировано. Фиг с ним, с частично заполненным листом бумаги, вылезающим из принтера после RTE. Странно другое - PSAbort() в данном случае не помогает, программа точно так-же крэшится, как и без EXIT PROCEDURE.
|
|
|
|
|
| |
Пост N: 6683
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.01.18 22:50. Заголовок: Сыроват однако новый..
Сыроват однако новый PS32 или мне так кажется ? У меня с прежним таких бяк не было. Код примерно такой if PSInit() == 0 PSSetClipperComp(.t.) PSSetPageSize(DMPAPER_A4) PSBeginDoc(NPrint) PSSetUnit(APS_MILL) ***** какой то код PSEndDoc() else Soob("PageScript не загружен........","r/r","gr+/r") endif
|
|
|
|
| |
Пост N: 562
Зарегистрирован: 08.07.06
|
|
Отправлено: 03.01.18 23:37. Заголовок: Dima пишет: Сыроват..
Dima пишет: цитата: | Сыроват однако новый PS32 или мне так кажется ? |
| Мне особо не с чем сравнить, ты сам то работаешь с новой версией или со старой, провернной ? Попробуй туда, где ... какой-то код поставить что то вроде: ... x := "text string" x++ ... Интересно посмотреть, что будет. Да, забыл уточнить: у меня -mt и gtwvg.
|
|
|
|
| |
Пост N: 6685
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.01.18 23:39. Заголовок: Sergy пишет: со ста..
Sergy пишет: с ней старушкой Sergy пишет: цитата: | Да, забыл уточнить: у меня -mt и gtwvg. |
| и у меня Sergy пишет: Счас пробну :)
|
|
|
|
| |
Пост N: 6686
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.01.18 23:41. Заголовок: Dima пишет: Счас пр..
Dima пишет: Получил BASE 1086 , неверный аргумент ++
|
|
|
|
| |
Пост N: 6687
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.01.18 23:43. Заголовок: И далее как ты описа..
И далее как ты описал А не бывает такого у меня так как код отлажен.
|
|
|
|
| |
Пост N: 563
Зарегистрирован: 08.07.06
|
|
Отправлено: 04.01.18 16:31. Заголовок: Dima пишет: Получил..
Dima пишет: цитата: | Получил BASE 1086 , неверный аргумент ++ И далее как ты описал |
| Значит дело не в "новизне" версии. цитата: | А не бывает такого у меня так как код отлажен. |
| Круто. У кого нет ошибок в коде - пусть кинет в меня камень ? Развивать дальше ты его не собираешься? Уверен на 200% в отсутствии своих ошибок в дальнейшем? Даже если нет ошибок в твоем коде - их нельзя исключать в окружении: драйвер/память/сеть - неужели не глючат никогда ? А под столом кто-нить пнет ногой системник и из него вывалится на соплях державшийся кабель? Не то, чтобы я жути нагоняю, но RTE - это предсказуемый и контролируемый ядром Harbour процесс корректного (по возможности) завершения всех запущенных процессов, закрытия таблиц, устройств и тд и тп... Крэш, аналогичный вызываемому - это пздц с точки зрения сохранности данных и стабильности работы с системой. Возникает в узле внешнего устройства (принтера в данном случае). К чему приведет - никто не знает. Уверен, что нужно всеми средствами избегать подобной ситуации. Не смог найти форума поддержки PageScript32. Такой есть в природе?
|
|
|
|
| |
Пост N: 6688
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.01.18 17:00. Заголовок: Sergy пишет: Развив..
Sergy пишет: цитата: | Развивать дальше ты его не собираешься? |
| Пока устраивает то что есть. Sergy пишет: цитата: | Уверен на 200% в отсутствии своих ошибок в дальнейшем? |
| Нет не уверен , но если нахожу (находят) то фиксю.
|
|
|
|
| |
Пост N: 6689
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.01.18 17:12. Заголовок: Sergy пишет: Не смо..
Sergy пишет: цитата: | Не смог найти форума поддержки PageScript32 |
| Можно пробнуть сюда написать support@pagescript32.com Sergy пишет: цитата: | Крэш, аналогичный вызываемому - это пздц с точки зрения сохранности данных и стабильности работы с системой |
| Ты в этом уверен ? Мне кажется что после RTE Harbour , сама прога нормально завершается (ну типа с закрытием баз и тд и тп) а далее начинает завершаться сама DLL со своими ошибками , она ж вроде на делфи. Как вариант можно обернуть у себя весь код PS32 начиная с PSINIT в Begin Seguence PS Что то мне кажется что FastReport поведет себя так же в случае RTE в консольной Harbour проге.
|
|
|
|
| постоянный участник
|
Пост N: 5676
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.01.18 18:26. Заголовок: Dima пишет: Что то ..
Dima пишет: цитата: | Что то мне кажется что FastReport поведет себя так же в случае RTE в консольной Harbour проге. |
| Часто при отладке в МиниГуи форма FastReport ведёт себя непредсказуемо (я писал об этом здесь), приходиться снимать задачу через менеджер задач. Базы после этого ни разу не портились. На терминалке, при отладке формы тоже при ошибках вываливалась прога. Поставил простой обработчик ошибок для вывода функций для FastReport BEGIN SEQUENCE WITH { |e|break( e ) } RECOVER USING oError END SEQUENCE и всё... проблемы исчезли... Если форму FastReport отладил - то работает как часы, пока никто не жаловался. Единственно FastReport критичен для принтеров Херокс на ХР, у меня такое было на одном пользователе. Там что то с печатью хитро получилось, со всех программ печатает, а с FastReport нет.
|
|
|
Новых ответов нет
, стр:
1
2
3
4
5
All
[см. все]
|
|