Автор | Сообщение |
|
| постоянный участник
|
Пост N: 17
Зарегистрирован: 27.01.07
|
|
Отправлено: 30.08.07 14:58. Заголовок: Подскажите, как подружить xHarbour с HBPrint
Библиотеки (hbprinter, minigui, miniprint) пересобрал под xHarbour. Все *.ch указал. Простейший пример собирается, но получаем runtime error: INIT PRINTSYS SELECT DEFAULT PREVIEW DEFINE FONT "F0" NAME "Courier New" SIZE 24 START DOC START PAGE @ 10,10 SAY "Пробная страница HBPrint" FONT "F0" TO PRINT END PAGE END DOC RELEASE PRINTSYS Ошибка: переменная не существует _HMG_SYSDATA Чего еще не хватает? Подскажите, плиз.
|
|
|
Ответов - 14
[только новые]
|
|
|
| постоянный участник
|
Пост N: 18
Зарегистрирован: 27.01.07
|
|
Отправлено: 30.08.07 16:59. Заголовок: Re:
Кажись врубился... С xHarbour не получится использовать HBPrinter из комплекта MiniGUI, пересобрав его xHrb? Придется использовать Win32prn? Так или нет? Или всё же можно? Просто Win32prn даже не документирована. Ответьте хоть что-нить... :)
|
|
|
|
| модератор
|
Пост N: 539
Зарегистрирован: 25.05.05
|
|
Отправлено: 30.08.07 17:43. Заголовок: Re:
PSP пишет: цитата: | не получится использовать HBPrinter из комплекта MiniGUI, пересобрав его xHrb? |
| Нет, вывод неверный. HBPrinter работает с xHarbour без проблем. Решение по шагам: 1. создать каталог xLib в папке MiniGUI 2. пересобрать все библиотеки с xHarbour командой MakeLib /x - они должны лежать в папке xLib 3. перейти в папку samples\Advanced\HBprinter и набрать Compile /x для сборки контрольного примера Чем еще можно помочь - не знаю
|
|
|
|
| постоянный участник
|
Пост N: 19
Зарегистрирован: 27.01.07
|
|
Отправлено: 30.08.07 20:07. Заголовок: Re:
1. Сделал. 2. Думаю, что сделал. MiniGUI, HPPrinter, Miniprint точно пересобрал. Последнюю на всякий случай. :) 3. Точно не помню уже, заметался. По-моему, делал; была куча unresolved external... кажись. Проверю` цитата: | Чем еще можно помочь - не знаю |
| Очень надеюсь, что знаете! :) Вот еще что: собирал с созданием .ppo и свой пример, и пример из MiniGUI. Сначала _HMG_SYSDATA объявляется MEMVAR (файл i_var.ch). В тексте обеих программ нигде нет инициализации этой переменной. Потом, при завершении печати страницы используется _HMG_SYSDATA[41] (в обеих программах) и мы имеем runtime error в моей и нормальную работу (правда с GUI) в вышеприведенном примере. Извините за путанный рассказ... Надеюсь на помощь. Спасибо!
|
|
|
|
| постоянный участник
|
Пост N: 20
Зарегистрирован: 27.01.07
|
|
Отправлено: 30.08.07 20:48. Заголовок: Re:
|
|
|
|
| модератор
|
Пост N: 540
Зарегистрирован: 25.05.05
|
|
Отправлено: 30.08.07 21:17. Заголовок: Re:
PSP пишет: Теперь стало яснее Дело в том, что для предпросмотра в HBPrinter используются GUI-элементы, поэтому и возникают проблемы с массивом _HMG_SYSDATA.
|
|
|
|
| постоянный участник
|
Пост N: 21
Зарегистрирован: 27.01.07
|
|
Отправлено: 31.08.07 12:02. Заголовок: Re:
Т.е. не получицца?
|
|
|
|
| модератор
|
Пост N: 541
Зарегистрирован: 25.05.05
|
|
Отправлено: 31.08.07 12:15. Заголовок: Re:
PSP пишет: Ну, почему-же так категорично? Закомментируй метод Preview и др., которые используют GUI, и пользуйся только движком HBPrinter.
|
|
|
|
| Администратор
|
Пост N: 587
Зарегистрирован: 23.05.05
|
|
Отправлено: 31.08.07 13:06. Заголовок: Re:
Дык preview - это самое ценное, что есть в HBPrinter Можно ведь использовать класс win32prn из стандартной поставки. Все для печати там есть, кроме preview
|
|
|
|
| постоянный участник
|
Пост N: 22
Зарегистрирован: 27.01.07
|
|
Отправлено: 31.08.07 13:23. Заголовок: Re:
Уже работает. :) Пока без превью. Но можно выбирать принтер из стандартного виндового диалога: SELECT BY DIALOG. Уже приятно. Не могу пока заставить печатать русскими, прога в OEM. Отпишусь позже... Спасибо!
|
|
|
|
| постоянный участник
|
Пост N: 23
Зарегистрирован: 27.01.07
|
|
Отправлено: 31.08.07 14:01. Заголовок: Re:
Preview заработало. Консольное окно само по себе, а печать в виндовом окне сама по себе... :) Пусскими пока не печатает. :(
|
|
|
|
| постоянный участник
|
Пост N: 24
Зарегистрирован: 27.01.07
|
|
Отправлено: 31.08.07 14:12. Заголовок: Re:
Блин, не врубаюсь, как русские получить? Делал: HB_SetCodePage( "RU866" ) (думаю, не влияет на HBPrint) HB_LangSelect( "RU866" ) (думаю, не влияет на HBPrint) SET CHARSET (и ОЕМ_CHARSET, и ANSI_CHARSET, и RUSSIAN_CHARSET) - не меняется ничего. Использовал HB_OEMToAnsi() - по барабану... В Preview тоже русских нет.
|
|
|
|
|
| постоянный участник
|
Пост N: 25
Зарегистрирован: 27.01.07
|
|
Отправлено: 31.08.07 14:47. Заголовок: Re:
Всё, есть русские. SET CHARSET надо перед DEFINE FONT указывать. Спасибо Григорию ОГРОМНОЕ!!! Приношу свои извинения за некоторые тормоза... :)
|
|
|
|
| постоянный участник
|
Пост N: 331
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.08.07 17:46. Заголовок: Re:
PSP пишет: цитата: | Preview заработало. Консольное окно само по себе, а печать в виндовом окне сама по себе... :) |
| Очень интересен твой пример. Большая просьба выслать или выложить сам пример и файл сборки. Если большой то можно мне на мыло 30195@mail.ru Спасибо заранее...
|
|
|
|
| постоянный участник
|
Пост N: 26
Зарегистрирован: 27.01.07
|
|
Отправлено: 31.08.07 19:51. Заголовок: Re:
Пример просто тестовый: /////////////////////////////////////////// #include "MiniGUI.ch" #include "WinPrint.ch" FUNCTION Main CLS @ 1, 1 SAY "Console window" // чтобы видеть консольное окно cStr := "Пробная страница HBPrint" DEFINE WINDOW Form_1 ; AT 0,0 ; WIDTH 10 HEIGHT 10 ; TITLE HB_OEMToAnsi( 'Печать' ); MAIN ; NOSHOW ; // чтобы не видеть просто пустое окно ON INIT Printing( cStr ) END WINDOW ACTIVATE WINDOW Form_1 RETURN NIL //------------------------------------- FUNCTION Printing( cStr ) LOCAL c, i INIT PRINTSYS SELECT BY DIALOG PREVIEW SET PREVIEW RECT 0, 0, 600, 800 GET SELECTED PRINTER TO c IF ! Empty( c ) SET CHARSET OEM_CHARSET DEFINE FONT "F1" NAME "Times New Roman" SIZE 30 SET ORIENTATION LANDSCAPE START DOC FOR i := 1 TO 3 START PAGE @ 20, 10 SAY cStr + " page " + AllTrim( Str( i ) ) FONT "F1" TO PRINT END PAGE NEXT END DOC END // IF RELEASE PRINTSYS DoMethod( "Form_1", "Release" ) RETURN NIL //---------------------------------------------------- cStr в оригинале в кодировке OEM. ///////////////////////////////////////////////////////////// Файл сборки (т.е. его библиотечная чать): echo c:\minigui\xlib\tsbrowse.lib + >> b32.bc echo c:\minigui\xlib\minigui.lib + >> b32.bc echo c:\minigui\xlib\dll.lib + >> b32.bc echo c:\xharbour\lib\gtwin.lib + >> b32.bc echo c:\xharbour\lib\gtgui.lib + >> b32.bc echo c:\xharbour\lib\rtl.lib + >> b32.bc echo c:\xharbour\lib\vm.lib + >> b32.bc echo c:\xharbour\lib\lang.lib + >> b32.bc echo c:\xharbour\lib\codepage.lib + >> b32.bc echo c:\xharbour\lib\macro.lib + >> b32.bc echo c:\xharbour\lib\rdd.lib + >> b32.bc echo c:\xharbour\lib\dbfntx.lib + >> b32.bc echo c:\xharbour\lib\dbfcdx.lib + >> b32.bc echo c:\xharbour\lib\dbffpt.lib + >> b32.bc echo c:\xharbour\lib\hbsix.lib + >> b32.bc echo c:\xharbour\lib\common.lib + >> b32.bc echo c:\xharbour\lib\debug.lib + >> b32.bc echo c:\xharbour\lib\pp.lib + >> b32.bc echo c:\xharbour\lib\ct.lib + >> b32.bc echo c:\xharbour\lib\libmisc.lib + >> b32.bc echo c:\minigui\xlib\hbprinter.lib + >> b32.bc echo c:\minigui\xlib\socket.lib + >> b32.bc echo c:\minigui\xlib\miniprint.lib + >> b32.bc ///////////////////////////////////////////////////////////////// Просто, я в первый раз это делал, вот и возбудился... :) Еще раз прошу всех извинить меня.
|
|
|
|