Форум » GUI » hwgui » Ответить

hwgui

Pasha: Что-то я совсем запутался Сделал svn commit по адресу: https://hwgui.svn.sourceforge.net/svnroot/hwgui Последний коммит был 2012-09-25 19:30 UTC-0300 Luis Fernando Basso <lfbasso at via-rs.net> На сайте проекта и в майл-листе вижу, что коммиты были и после этой даты. Но что-то не найду новый адрес А ветвь, куда я сбросил изменения, заморожена и не развивается ?

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

Pasha: Вроде бы нашел: svn checkout svn://svn.code.sf.net/p/hwgui/code/trunk hwgui-code Алексей, а как мне лучше поступить со своим коммитом ? Отменить изменения ?

AlexMyr: Только заметил, что не в ту ветку внесены изменения. Да полный бардак сейчас с проектом, думаю Александр появился, может он наведет порядок, а то админам, мне кажется, все-равно как и кто, и что делает с проектом. По коммитам, чтобы не портить картинку, в старой ветке отмените, а работайте уже с новой.

Pasha: А hwgui сейчас поддерживает сборку под линукс ?


AlexMyr: Не знаю, никогда не пробовал собирать.

AlexMyr: Александр, какие планы на проект?

alkresin: Время от времени ( последнее время все чаще :) ) вспоминаю, что надо бы зайти и разобраться с текущим состоянием дел, но пока так и не собрался. Чем больше изменений накапливается, тем страшнее за это браться. Сам пока использую версию 5-летней давности. И, знаете, кроме нескольких мелочей с Дизайнером, она меня устраивает. Из крупных вещей, которые надо сделать - это доработка Linux gtk версии. Надо бы перейти на другой print engine, т.к. gnomeprint давно заброшен, а в gtk появились новые средства печати. А вы что хотели бы изменить/добавить в HwGUI ?

AlexMyr: Основная для меня проблема это работа с дизайнером с текущими версиями harbour и hwgui, в чем проблема, в методах пишу функцию, там есть кириллица, так вот при повторном открытии там уже знаки вопроса, скорее всего нет поддержки юникода в richedit. Уже компилил дизайнер с hb_cdpselect("UTF"), все файли xml в UTF кодировке, текст на кнопках кириллицей нормально, но в richedit нет.

alkresin: У меня пока Harbour 2, собранный без UNICODE, поэтому и нет такой проблемы. Но на Линуксе под Wine я такое наблюдал. Попробуйте проверить вот что. В файле hriched.prg есть такое: CLASS HRichEdit INHERIT HControl #ifdef UNICODE CLASS VAR winclass INIT "RichEdit20W" #else CLASS VAR winclass INIT "RichEdit20A" #endif Интересно было бы узнать определена ли где-нибуль UNICODE, какой вариант компилируется ? И еще - может, появился уже RichEdit30W или даже новее ?

alkresin: И в richedit.c RichEdit20A упоминается, только там никто не догадался RichEdit20W добавить.

AlexMyr: alkresin пишет: В файле hriched.prg есть такое: Это я сделал изменения, почти год назад, вот из hwgui developers list: 16.12.2011 3:36, tom Confirm this problem, simply add #ifdef UNICODE CLASS VAR winclass INIT "RichEdit20W" #else CLASS VAR winclass INIT "RichEdit20A" #endif ----- Original Message ----- From: vatzct To: hwgui-developers@lists.sourceforge.net Sent: Thursday, December 15, 2011 5:53 PM Subject: [Hwgui-developers] Richedit control and unicode Hi! Now we have richedit only for ANSI window class, (from hriced.prg: CLASS VAR winclass INIT "RichEdit20A"), and when we build hwgui with -cflag=-DUNICODE, rechedit show ???????. How we can define while build hwgui is a unicode mode or not and set CLASS VAR winclass INIT "RichEdit20W"? Regards, Alexey Myronenko Но для полного счастья этого мало, а других девелоперов, я так понимаю, эта и другие проблемы не интересуют, и как было видно из обсуждения в том же hwgui developers list аргументами были, что большинство пользователей сидят на xHarbour, и подгонять hwgui к harbour им не надо, и думаю, что проект уже давно был бы только под xharbour. alkresin пишет: И в richedit.c RichEdit20A упоминается, только там никто не догадался RichEdit20W добавить. еще в prg могу покопаться, а вот с си только посмотреть (или поламать, но этого не делаю )

AlexMyr: Вот и сейчас повторяется старая песня, Basso вносит изменения без проверки, и как результат hwgui не собирается.

AlexMyr: alkresin пишет: Чем больше изменений накапливается, тем страшнее за это браться. Я уже предлагал, заморозить основную ветку, а все изменения, новшества и прочее делать в другой, но админы не согласились, мотивируя,что Basso сейчас в основном один, кто вносит изменения, и пусть лучше так чем замораживать (они админы, им видней). Поэтому, может сейчас приостановить вносить изменения? alkresin пишет: Сам пока использую версию 5-летней давности. И, знаете, кроме нескольких мелочей с Дизайнером, она меня устраивает. У меня проекты тоже где-то на версиях тех лет, может немного помоложе, какие-то мелкие правки делаю в ручном режиме в xml файле, что в формах, что в репортах.

AlexMyr: alkresin пишет: Интересно было бы узнать определена ли где-нибуль UNICODE После изменений сделанных Przemyslaw Czerpak для поддержки юникода в hwgui 2010-12-04 14:35 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) To compile HWGUI with UNICODE macro is enough to execute: hbmk2 hbxml.hbp hwg_qhtm.hbp hwgui.hbp procmisc.hbp -cflag=-DUNICODE

AlexMyr: И снова Basso внес ф-ю из xharbour, дизайнер не собирается как и все остальное, молодец парень. Хоть hbmk2 помогает: hbmk2: Hint: Add option 'xhb.hbc' for missing function(s): RAScan()

alkresin: AlexMyr пишет: еще в prg могу покопаться, а вот с си только посмотреть (или поламать, но этого не делаю Да просто замените в richedit.c RichEdit20A на RichEdit20W, перекомпилируйте - и посмотрите, что выйдет. Я уже предлагал, заморозить основную ветку, а все изменения, новшества и прочее делать в другой Мне такой вариант не очень нравится - не представляю, что потом с этими разными ветками делать, головной боли будет еще больше.

Pasha: Бразильцы получается только для xHarbour делают изменения. Тогда надо только править код после них.

AlexMyr: Pasha пишет: Тогда надо только править код после них. Не катит, надо их дисциплинировать

alkresin: Хотел исправить ситуацию с этим Rascan - и не смог сделать upload - не спросив пароля мне сказали Authorization failed. Я делал вот так: cd \svn\hwgui-code\hwgui \svn\svn commit --editor-cmd notepad.exe --username alkresin --encoding latin2 Что бы это могло быть ?

Pasha: У меня тоже сначала не получалось. Потом Maurizio la Cecilia прислал письмо, и разьяснил: Надо сначала сделать checkout с параметрами: svn checkout --username=ptsarenko svn+ssh://ptsarenko@svn.code.sf.net/p/hwgui/code/trunk/hwgui hwgui-code а потом уже commit

alkresin: AlexMyr пишет: hbmk2 hbxml.hbp hwg_qhtm.hbp hwgui.hbp procmisc.hbp -cflag=-DUNICODE Этого недостаточно, -cflag - это флаги для С. Для prg надо добавить -prgflag=-DUNICODE. Я подправил richedit.c - теперь, если вы перекомпилируете HwGUI с этими флагами, сама библиотека соберется с поддержкой UNICODE. Теперь, если вы включите в designer.prg вызов HWG_SETUTF8(), как рекомендует Przemyslaw: Now Harbour users who want to use HWGUI with applications using UTF8 strings can easy make it using HWGUI compiled with UNICODE macro. It's enough to add at the beginning of executed PRG code: HWG_SETUTF8() which informs Harbour VM that strings in user application use UTF8 encoding. ???? у вас больше не будет. Но текст в xml-файлах должен быть действительно в utf-8, что, вообще-то, создает новые проблемы.

AlexMyr: alkresin пишет: Но текст в xml-файлах должен быть действительно в utf-8, что, вообще-то, создает новые проблемы. Но дизайнер автоматом определяет текст в xml файле! Я понимаю,что для нынешней реализации harbour с клиентскими приложениями проблем нет, правильно, только для поддержки приложений под harbour и xharbour проблемы, да?

alkresin: AlexMyr пишет: Но дизайнер автоматом определяет текст в xml файле! И что он делает, определив кодировку ? Я понимаю,что для нынешней реализации harbour с клиентскими приложениями проблем нет, правильно, только для поддержки приложений под harbour и xharbour проблемы, да? Про возможные проблемы с Harbour/xHarbour я еще не думал. Вы обратили внимание, что после перехода на utf8 подсветка в редакторе работает неправильно после строк на кириллице ? Это происходит потому, что обычные функции обработки строк ( At(), Substr() и пр. ) не подходят для такой кодировки. Здесь надо применять специализированные ( hb_utf8Substr() и пр., см. http://kresin.belgorod.su/rus/hrbfaq.html#Doc4 ). Но подсветка - это еще цветочки. Эти специализированные функции надо применять тогда и во всех скриптах и, возможно, в пользовательских программах. Я еще не разбирался вообще, как должна быть откомпилирована программа для работы с формами на utf8. Возможно, проще всего будет конвертировать форму с utf8 на обычную ANSI кодировку перед использованием. Возможно, и с Дизайнером надо по другому поступить, тут подумать надо, я поэтому не запостил эту hwg_setutf8(). Надо проверить, как работают конечные программы.

alkresin: Алексей, проблема решается еще проще. Стройте HwGUI без поддержки Unicode, а в Дизайнере установите нужную кодовую страницу: hb_cdpSelect( "RU1251" ) И никаких ?????. Надо будет предусмотреть в Дизайнере кодокую страницу по умолчанию, чтоб ее можно было менять, чтобы запоминалась в конфигурационном файле и чтобы в соответствии с ней устанавливался encoding в формах.

AlexMyr: alkresin пишет: Алексей, проблема решается еще проще. Спасибо, попробую.

AlexMyr: alkresin пишет: Стройте HwGUI без поддержки Unicode, а в Дизайнере установите нужную кодовую страницу: Построил без UNICODE hbmk2 hwgui.hbp hbxml.hbp procmisc.hbp -trace %1 %2 > log.txt 2>&1 В дизайнере указал REQUEST HB_CODEPAGE_RU1251 hb_cdpSelect( "RU1251" ) Создал новую форму, на ней кнопку, в методе onClick написал комментарий и вызов ф-ии, все сохранил. Захожу в onClick - все нормально. Перезапускаю дизайнер, открываю форму, захожу в onClick - комментарий снова ??????.

AlexMyr: Что интересно, открываю onClick первый раз - получаю ?????, закрыл, открываю снова - уже нормальный текст.

AlexMyr: проблемы с прорисовкой object inspector, т.е. клацаешь по ячейкам, а выделения остаются.

AlexMyr: Дизайнер отчетов вообще виснет при создании нового или открытии существующего отчета, кто может проверить у себя. Собирал: Harbour Build Info --------------------------- Version: Harbour 3.2.0dev (Rev. 18671) Compiler: MinGW GNU C 4.7.2 (32-bit) Platform: Windows XP 5.1.2600 Service Pack 3 и hwgui * $Id: Changelog 1958 2012-12-11 16:42:21Z lfbasso $

alkresin: Что интересно, открываю onClick первый раз - получаю ?????, закрыл, открываю снова - уже нормальный текст. У меня раньше такое было, а вот с вновь скомпилированным Дизайнером - нормально. проблемы с прорисовкой object inspector, т.е. клацаешь по ячейкам, а выделения остаются. Да, есть такое дело, что-то там напортачил Бассо. Дизайнер отчетов вообще виснет при создании нового или открытии существующего отчета У меня не виснет. Harbour 3.2.0dev (Rev. 18481) , bcc

alkresin: Дизайнер отчетов вообще виснет при создании нового или открытии существующего отчета При создании новых и при открытии простых примеров - не виснет, а вот когда я начал открывать свои реальные большие формы отчетов - стал виснуть и даже срубаться без каких-либо сообщений.

alkresin: Алексей, я выяснил, отчего у меня отчеты не открывались Дизайнером - там кто-то изменил вызовы hb_At() на At(), даже не оставив сообщения в Changelog. Я это дело исправил - может и у вас теперь будут открываться ?

AlexMyr: alkresin пишет: Я это дело исправил - может и у вас теперь будут открываться ? Только что проверил, все равно виснет, и при этом еще проц грузит свыше 90%. Попробую через отладчик посмотреть что происходит.

AlexMyr: AlexMyr пишет: alkresin пишет: цитата: Я это дело исправил - может и у вас теперь будут открываться ? Только что проверил, все равно виснет, и при этом еще проц грузит свыше 90%. Попробую через отладчик посмотреть что происходит. проверил на домашнем компе - работает нормально (что-то с компом на работе)

AlexMyr: Александр, может быть получиться собрать версию hwgui с которой вы работаете текущей версией harbour и потом помалу перенести нужное с текущей версии hwgui, а то со стороны смотрится что harbour более глючный чем xharbour (для которого hwgui работает стабильно по словам xharbour юзеров). Может есть другой подход к данной проблеме, но сдается, что вылавливать и исправлять косяки намного и сложнее, и по времени дольше, и Basso твердит, что все нормально.

alkresin: И где ее держать ? Открывать новый проект, xHwGUI :) ? Я посмотрю, что можно сделать с моей старой версией - и если это не займет много времени, поправлю ее для совместимости с Harbour 3.2 и выложу у себя на сайте. А потом все же займусь той, что на SVN.

AlexMyr: Александр, большое спасибо.

alkresin: Я выложил модифицированную версию наhttp://kresin.belgorod.su/rus/hwgui.html, назвал ее 2.16a. Работает и с Harbour 3.2 и с xHarbou 1.2.1 (SimpLex) (Rev. 6406) - специально скачал сегодня с их сайта и проверил.

alkresin: Внес аналогичные изменения в Linux gtk версию, добавил samples/hbmk.bat чтобы компилировать примеры с помощью hbmk2 и перезалил дистрибутив hwgui-2.16a.src.zip.

AlexMyr: hwgui собрал, собираю designer ругается на designer.rc (использую mingw) windres.exe: designer.rc:3: syntax error designer.rc:1:0: fatal error: when writing output to : Invalid argument compilation terminated. windres.exe: preprocessing failed.

alkresin: А как он раньше у вс собирался? Файл designer.rc - от 2 марта 2007 г.

AlexMyr: alkresin пишет: А как он раньше у вс собирался? Файл designer.rc - от 2 марта 2007 г. уже не помню, но скорее всего сидел на borland, попробую его откопать и проверить.

alkresin: Да, похоже, windres от mingw не понимает таких записей в rc. Тогда, чтобы Дизайнер собирался mingw, надо все битмапки, что описаны в rc шестнадцатиричным кодом, вытащить оттуда в bmp-файлы, а в rc прописать их имена. А можно просто воспользоваться бинарным дистрибутивом HwGUI, который я выложил к себе на http://kresin.belgorod.su/rus/hwgui.html, тпм и Дизайнер скомпилированный под Bcc 5.5 есть.

AlexMyr: Перенес ресурсы с текущей версии, все собралось. Пересобрал свой старый проект - работает, кириллица на месте, где были вылети на тек. версии, тут все нормально. Пока останусь на этой версии. Александр, будете разбираться с текущей версией, знайте, готов тестировать, помогать чем смогу. Удачи.

alkresin: Изменил файл ресурсов ( взял из текущей версии ), заодно чуть поправил файлы из source/xml и перезалил hwgui-2.16a.src.zip и hwgui-2.16a.bcc.zip

alkresin: Алексей, я попробовал собрать HwGUI с mingw, Designer собрать не получилось - ругается на то, что errorsys() переопределен. Там что, опцию какую-нибудь надо указать дополнительную ?

AlexMyr: На работе также получал пару раз такую ошибку, в пятницу тоже (но т.к. текущим Designerом не пользуюсь, то о ней не писал ни на форум, ни в Dev list ). Только что проверил дома, все нормально, и HwGUI, и Designer. Harbour 3.2.0dev (Rev. 18605) Compiler: MinGW GNU C 4.7 (32-bit) Platform: Windows 7 6.1.7601 Service Pack 1 HwGUI * $Id: Changelog 1990... После НГ надо будет покопать поглубже, может hbmk2 глючит?

AlexMyr: Пробую собрать свой тестовый пример, получаю ту же ошибку (multiple definition of `_HB_FUN_ERRORSYS'), собираю тестовые которые в hwgui/samples все нормально.

alkresin: Еще раз подправил 2.16а - изменил вызовы super: на ::super:, чтобы нормально компилировалось последей версией Harbour.

AlexMyr: Александр, в последнем commit изменено два файла, но в changelog указан только один, может по ошибке. Я уже рекомендовал в дев-листе добавить и использовать скрипт commit.hb, но xharbour users категорично против (для них он не рабочий). На выходе этот скрипт дает инфу об измененных файлах и заносит ее в changelog, остается только добавить описание изменений и кто внес их.

alkresin: Да, один из файлов, hcontrol.prg, я не планировал сейчас менять, просто какое-то время назад по-ошибке что-то написал там, а не в рабочем каталоге и забыл про это. Насчет commit.hb - ничто не мешает нам им пользоваться, не обязательно для этого добавлять его в проект. Это, наверное, удобно - каждый раз одна из самых неприятных процедур - прописывать файлы с путями. Киньте его мне на почту, если не трудно.

AlexMyr: alkresin пишет: Насчет commit.hb - ничто не мешает нам им пользоваться, не обязательно для этого добавлять его в проект. Я так и делаю, просто скопировал его в папку hwgui и там запускаю, все изменения сразу в changelog. alkresin пишет: Киньте его мне на почту, если не трудно. Этот файл находится в harbour\bin\commit.hb, на всякий случай отправил.

AlexMyr: Александр, не пробовали разбираться с переопределением errorsys? Какая-то загадка, одно собирается, другое нет.

alkresin: Нет пока, но надо будет что-нибудь придумать. Можно прописать в INIT PROC вызов ErrorBlock() - если быть твердо уверенным, что INIT PROC вызывается позже, чем Errorsys().

alkresin: Да, судя по всему, так можно сделать.

AlexMyr: Александр, вот что выяснил, возьмем к примеру hwgui\utils\designer\samples\example.prg, пробуем скомпилировать hbmk2 ..\..\..\hwgui.hbc example.prg получаем [pre2]Generating C source output to 'd:\tmp\hbmk_dvi5yg.dir\example.c'... Done. ../../../lib/libhwgui.a(errorsys.o):errorsys.c:(.text+0xa0): multiple definition of `HB_FUN_ERRORSYS' c:/dev/harbour/lib/win/mingw/libhbrtl.a(errsys.o):errsys.c:(.text+0x0): first de fined here collect2.exe: error: ld returned 1 exit status hbmk2: Error: Running linker. 1[/pre2] в example.prg комментируем строки [pre2]//Local oForm := HFormTmpl():Read( "example.xml" ) // oForm:ShowMain()[/pre2] снова hbmk2 ..\..\..\hwgui.hbc example.prg и получаем свой екзешник. Может дело в hfrmtmpl.prg?

alkresin: Дело в особенностях С компиляторов. В hfrmtmpl.prg есть прямой вызов функции errormessage() из errorsys.prg, поэтому когда линкуется hfrmtmpl.prg, линкуется и errorsys.prg - и mingw ругается. Без hfrmtmpl.prg, по-видимому, errorsys.prg не линкуется и, соответственно, используется стандартный обработчик ошибок, что тоже не есть хорошо. Но я сегодня исправлю это дело.

AlexMyr: alkresin пишет: Но я сегодня исправлю это дело. Спасибо, будем ждать

alkresin: Исправил, заодно и в hwgui-2.16a эти исправления внес.

alkresin: Добавил бинарники hwgui-2.16a для Mingw 4.6.1, см. http://kresin.belgorod.su/rus/hwgui.html

AlexMyr: alkresin пишет: Исправил, заодно и в hwgui-2.16a эти исправления внес. спасибо, работает. проверял на mingw gcc version 4.7.2 (GCC)

AlexMyr: Александр, написал в dev list про новую проблему при использовании форм (созданных в designer), и возможное ее решение, не посмотрите? Спасибо.

alkresin: Посмотрю чуть позже. Вчера вернулся из Москвы, со съезда Родительского Всероссийского Сопротивления, привожу мысли в порядок :)

alkresin: Изменил имена функций, как и на Sourceforge - теперь все с префиксом hwg_. Кроме того, перенес с Sourceforge anchors, только изменил реализацию - чтоб было проще и прозрачнее. Hdialog теперь потомок Hwindow, это позволило, опять-таки, сделать проще, прозрачнее и несколько меньше по объему соответствующий код. Версию по такому случаю назвал 2.16b

AlexMyr: alkresin пишет: Версию по такому случаю назвал 2.16b При сборке библиотеки вываливается много варнингов, вот кусок: ../../../../source/commond.c:345:23: warning: initialization discards 'const' qualifier from pointer target type [enabled by default] ../../../../source/commond.c:346:24: warning: initialization discards 'const' qualifier from pointer target type [enabled by default] ../../../../source/commond.c: In function 'HB_FUN_HWG_WRITEPRIVATEPROFILESTRING': ../../../../source/commond.c:356:23: warning: initialization discards 'const' qualifier from pointer target type [enabled by default] ../../../../source/commond.c:357:21: warning: initialization discards 'const' qualifier from pointer target type [enabled by default] ../../../../source/commond.c:358:20: warning: initialization discards 'const' qualifier from pointer target type [enabled by default] ../../../../source/commond.c:359:23: warning: initialization discards 'const' qualifier from pointer target type [enabled by default] ../../../../source/control.c:40:0: warning: повторне визначення "CCM_SETVERSION" [enabled by default] In file included from ../../../../source/control.c:17:0: c:\mingw\bin\../lib/gcc/mingw32/4.7.2/../../../../include/commctrl.h:1512:0: note: ...це м?сце першого визначення ../../../../source/control.c:41:0: warning: повторне визначення "CCM_GETVERSION" [enabled by default] In file included from ../../../../source/control.c:17:0: c:\mingw\bin\../lib/gcc/mingw32/4.7.2/../../../../include/commctrl.h:1513:0: note: ...це м?сце першого визначення ../../../../source/control.c: In function 'HB_FUN_HWG_INITTABCONTROL': ../../../../source/control.c:575:19: warning: assignment discards 'const' qualifier from pointer target type [enabled by default] ../../../../source/control.c: In function 'HB_FUN_HWG_ADDTAB': ../../../../source/control.c:594:16: warning: assignment discards 'const' qualifier from pointer target type [enabled by default] ../../../../source/control.c: In function 'HB_FUN_HWG_ADDTABDIALOG': ../../../../source/control.c:606:16: warning: assignment discards 'const' qualifier from pointer target type [enabled by default] ../../../../source/control.c: In function 'HB_FUN_HWG_SETTABNAME': ../../../../source/control.c:631:16: warning: assignment discards 'const' qualifier from pointer target type [enabled by default] ../../../../source/control.c: In function 'HB_FUN_HWG_TREEADDNODE': ../../../../source/control.c:692:16: warning: assignment discards 'const' qualifier from pointer target type [enabled by default]

alkresin: AlexMyr пишет: При сборке библиотеки вываливается много варнингов, вот кусок А раньше их разве не было ?

AlexMyr: alkresin пишет: А раньше их разве не было ? были.

alkresin: Понемногу приближаю эту ветку к той, что на Sourceforge. Переписал после проверки все *.c файлы, добавил оттуда класс HScrollArea и соответствующую функциональность, исправил некоторые ошибки. Теперь это HwGUI 2.16c

AlexMyr: alkresin пишет: Теперь это HwGUI 2.16c Не могу закачать: The requested URL /down/hwgui-2.16с.src.zip was not found on this server.

alkresin: Это я там русскую "с" вместо латинской нечаянно поставил. Теперь исправлено.

AlexMyr: alkresin пишет: Теперь исправлено. Спасибо, закачал.

AlexMyr: alkresin пишет: Теперь это HwGUI 2.16c С помощью дизайнера создал форму, вставил browse, задал шрифт для browse, записал, закрыл, открываю, размер фонта уже другой. В xml фонт записался коряво [pre2] <property name="font"> <font name="Verdana" width="0" height="-13M5.00" weight="400" charset="204"/> </property>[/pre2] к height добавился мусор. В текущей версии - нормально.

AlexMyr: Версия 216с, с помощью designer создал форму вставил два datepicker - переменные d1 и d1 и кнопку, активный datepicke1, при клике на кнопку передаю в ф-ию d1 и d2, так вот тип d2 = L, а если кликнуть по datepicker2, то тип d2 = D. Александр, как быть?

AlexMyr: AlexMyr пишет: как быть? пока сделал следующее, в методе onDlgInit этим переменным присвоил date(), тип передается правильный, но вылезло другое, при изменении даты выпадаю по ошибке Error BASE/1003 Variable does not exist: ASCRIPTT Called from source\procmisc\procscri.prg->CALLFUNC(536).

alkresin: AlexMyr пишет: с помощью designer создал форму вставил два datepicker - переменные d1 и d1 и кнопку, активный datepicke1, при клике на кнопку передаю в ф-ию d1 и d2, так вот тип d2 = L, а если кликнуть по datepicker2, то тип d2 = D Ничего не понял. Лучше давайте саму форму.

AlexMyr: alkresin пишет: Ничего не понял. Лучше давайте саму форму. форму отправил на hwgui dev list.

alkresin: AlexMyr пишет: форму отправил на hwgui dev list. Посмотрел я эту форму - вообще говоря, ведет себя правильно. Переменные надо инициализировать. Если вы пишете GET ... READ, вы же присваиваете предварительно какие-то значения переменным. В нашем случае d_beg имеет тип D, поскольку фокус сразу попадает на него и, соответственно, переменная получает значение из datepicker'а. А вот с onDlgInit ситуацию не могу подтвердить. Поставил туда d_beg := d_end := Date() - и все нормально работает, при изменении ошибок не вылетает.

alkresin: Выложил измененный 2.16с: http://www.kresin.ru/hwgui.html. HStaticLink переписан, сделаны некоторые исправления, в install.txt добавлен текст о компиляции под Линуксом, существенно переработан utils/dbc. Чтобы не менять каждый раз букву в номере версии, добавил номер build'a, в данном случае это 1001.

pureproft: export HB_ROOT=/home/me/harbour А если установлен 3.0 deb ubuntu? или с ним и не собрать и нужно смотреть в сторону 3... dev

alkresin: pureproft пишет: А если установлен 3.0 deb ubuntu? или с ним и не собрать и нужно смотреть в сторону 3... dev Должно собраться. gtk/Makefile.linux написан в предположении, что HB_ROOT указывает на каталог Harbour, что сам компилятор - в harbour/bin/linux/gcc. gtk/samples/build.sh думает, кроме того, что библиотеки Harbour находятся в harbour/lib/linux/gcc. Если это не так, надо сделать соответствующие изменения, и все должно собраться.

pureproft: так я и имею ввиду результат установки из deb при котором всё раскладывается по /usr/......

alkresin: Значит, надо в Makefile.linux убрать путь перед вызовом harbour и изменить путь к заголовочным файлам: harbour -n -w -es2 $(HB_FLAGS) -I/usr/include/harbour -I$(INC_DIR) -o$@ $< ... gcc $(CFLAGS) -c -I$(INC_DIR) -I/usr/include/harbour `pkg-config --cflags libgnomeprint-2.2` `pkg-config --cflags gtk+-2.0` -o $@ $< ... gcc $(CFLAGS) -c -I$(INC_DIR) -I/usr/include/harbour `pkg-config --cflags libgnomeprint-2.2` `pkg-config --cflags gtk+-2.0` -o $@ $<

AlexMyr: Александр, не критично, но еще б убрали из hwgui.hbc библиотекеу hwg_qhtm

alkresin: Выложил на http://www.kresin.ru/dbc.html GUI версию Dbc - Dbchw 2.0

AlexMyr: alkresin пишет: Dbchw 2.0 Кодировка меняется только изменением фонта? После открытия базы надо мышкой клацнуть окно для просмотра базы, до этого ни стрелками, ни колесиком мышки по базе не ходим.

alkresin: Да, про кодировки я и забыл - тестировал все на test.dbf. А с фокусом на browse надо разбираться, hwg_setfocus() что-то не отрабатывает.

alkresin: Добавил поддержку разных кодовых страниц, там еще пример ini - файла.

nick_mi: Dbchw 2.0 А можно добавить поддержку DBFNTX

alkresin: Да можно, хотя я думал, что им уже никто не пользуется.

nick_mi: Да пользуемся еще. Базы на ADS но с NTX. А переделать все на CDX - это гигантская работа

alkresin: Добавил поддержку dbfntx, кое-что еще поправил и улучшил.

Dima: nick_mi пишет: А переделать все на CDX - это гигантская работа Совсем нет.

nick_mi: Добавил поддержку dbfntx, кое-что еще поправил и улучшил.. Александр, большое спасибо!!!

nick_mi: Dima пишет nick_mi пишет: цитата: А переделать все на CDX - это гигантская работа Совсем нет. Порядка 500 EXE файлов крутится в работе и где-то 10500 таблиц, и на каждую как правило далеко не 1 индех причем они между собой зачастую связаны

alkresin: Выложил GUI версию Dbc для LetoDB - Dbchwl 2.3

SergKis: alkresin пишет:Выложил GUI версию Dbc для LetoDB DbchwL 2.3 GUI версия для LetoDB - выдает: Этой страницы нет на сайте. This page is unavailable.

alkresin: А... Это я букву L большую случайно написал. Исправлено.

Vlad04: Разбираюсь с примерами. Использую Harbour из поставки MiniGUI. К сожалению не все примеры собираются. Это ошибки примеров или другие причины?

AlexMyr: Трудно что-то сказать в таком общем случае . Какой пример, какая ошибка?

Vlad04: К примеру : - demohlist.prg (http://shot.qip.ru/00cwB0-3bmdN1IDA/ ) - demomaximize.prg - hbrun.prg - testrtf.prg - testip.prg и др. Еще для сборки я использую батник bld.bat , у которого прямо указываю переменные окружения @echo off set HRB_DIR=c:\MiniGUI\Harbour rem \%HB_PATH% set HWGUI_INSTALL=c:\hwgui rem \.. rem SET C_DEFINES= -DHB_THREAD_SUPPORT rem SET H_DEFINES= -DHB_THREAD_SUPPORT if not exist obj md obj %HRB_DIR%\bin\harbour %1.prg %H_DEFINES% -n -i%HRB_DIR%\include;%HWGUI_INSTALL%\include %2 %3 c:\Borland\BCC55\bin\bcc32 -v -y -c %C_DEFINES% -O2 -tW -M -I%HRB_DIR%\include;%HWGUI_INSTALL%\include %1.c if exist %1.rc c:\Borland\BCC55\bin\brc32 -r %1 -foobj\%1 echo 1 24 "..\image\WindowsXP.Manifest" > obj\hwgui_xp.rc c:\Borland\BCC55\bin\brc32 -r obj\hwgui_xp -foobj\hwgui_xp и т.д. Вообщем , по примерам, не так важно, скорее не все библиотеки подключены. Больший интерес вызывает использование дизайнера в проекте. Есть предложение пример a.prg повторить с использованием Дизайнера.

AlexMyr: Vlad04 пишет: Еще для сборки я использую батник bld.bat Пользуюсь hbp файлами, все нормально собирается (но есть проблемки на некоторых тестах). Vlad04 пишет: Есть предложение пример a.prg повторить с использованием Дизайнера. Кое что реализовано тут hwgui-code\utils\designer\samples\*.xml Какую версию hwgui смотрите?

Vlad04: hwgui-2.16c. под Borland C 5.5 С САЙТА http://www.kresin.ru/huchet.html Кое что реализовано тут hwgui-code\utils\designer\samples\*.xml Не собирается. Там в батнике наверно библиотеки xHarbour .

Vlad04: SET HB_MT= SET C_DEFINES= SET H_DEFINES= Это что за переменные ( в батниках) ?

AlexMyr: Vlad04 пишет: Не собирается. Попробуйте так: hbmk2 example.prg ../../../hwgui.hbc только в hwgui.hbc надо убрать ссылку на hwg_qhtm Vlad04 пишет: Там в батнике наверно библиотеки xHarbour . Есть какие-то трудности в использовании hbmk2 и hbp, их использовать сейчас легче чем батники.

alkresin: Vlad04 пишет: Это что за переменные ( в батниках) ? HB_MT=mt - если вы строите мультипоточное приложение. H_DEFINES=... - дополнительные опции компиляции для Harbour C_DEFINES=... - дополнительные опции компиляции для C Если у вас что-то не строится, пришлите сюда соответствующий фрагмент log'а Не собирается. Там в батнике наверно библиотеки xHarbour . Точно, надо поправить. Скоро собираюсь обновить 2.16c, надо будет и про это не забыть. Готовящиеся изменения в 2.16c касаются большей частью gtk версии - я переделываю движок печати с libgnomeprint, который уже давно не поддерживается, на новый родной gtkprint и cairo.

alkresin: Vlad04 пишет: - demohlist.prg - demomaximize.prg - hbrun.prg - testrtf.prg - testip.prg и др. demohlist, testrtf, testip - ошибки в названиях функций в исходниках HwGUI, я их никогда не использовал, потому и упустил. Теперь исправил, в предстоящем релизе будет собираться; demomaximize.prg - там синтаксическая ошибка в самом файле, надо будет поправить, или вообще выкинуть этот пример, как малоинтересный; hbrun.prg - кто-то вставил туда #include "hbextern.ch", чтобы прилинковать все модули Harbour, но не озаботился тем, что надо и библиотеки все указать в скрипте сборки.

Vlad04: Александр, спасибо. И ещё. HwGUI интересует в связке с designer форм. Я в консоле давным давно не пишу ( say ), а использую текстовые и dbf шаблоны, а здесь xml - удобно, очень гибкие конструкции. Но не все понятно. Документация на Аглицком и похоже устарела. Александр, не могли бы Вы выложить, выполненные с использованием designer, еще несколько примеров (с несколькими формами) ,использующих имеющие на палитре компоненты . Сейчас в порядке тренировки пытаюсь переложить пример a.prg на вариант построенный с designer. Но в трех соснах путаюсь. Вот часть кода. Форму построил в xml , компилируется , открывается, но ругается на FileOpen #include "windows.ch" #include "guilib.ch" REQUEST HTIMER REQUEST DBCREATE REQUEST DBUSEAREA REQUEST DBCREATEINDEX REQUEST DBSEEK REQUEST hwg_Shellabout Function Main Local oForm := HFormTmpl():Read( "a.xml" ) oForm:ShowMain() Return Nil Function FileOpen Local oModDlg, oBrw Local mypath := "\" + CURDIR() + IIF( EMPTY( CURDIR() ), "", "\" ) Local fname := hwg_Selectfile( "xBase files( *.dbf )", "*.dbf", mypath ) Local nId .... Спасибо

alkresin: Vlad04 пишет: Документация на Аглицком и похоже устарела. Тот readme.txt язык не поворачивается назвать документацией :), про использование Дизайнера там 4 маленьких абзаца в конце, но они не устарели. Если что неясно, спрашивайте. Александр, не могли бы Вы выложить, выполненные с использованием designer, еще несколько примеров (с несколькими формами) ,использующих имеющие на палитре компоненты . Все мои рабочие формы связаны с рабочими - же dbf-файлами, подготовить самодостаточный усеченный комплект ( чтобы не было реальных данных ) быстро не получится, но, если очень надо, попробую. А huchet вы смотрели ? Там как раз такой усеченный комплект для печати платежек. Сам я использую созданные Дизайнером формы для ограниченного круга приложений, связанных с huchet, в гораздо большей степени применяю его для создания печатных отчетов - поскольку один и тот же файл отчета можно использовать и в GUI, и в консольных программах, и под Windows, и под Linux. Вот часть кода. Форму построил в xml , компилируется , открывается, но ругается на FileOpen Может, не на fileopen, а на что-то внутри него ? Я для примера вставил в example.prg строчки: Function FileOpen() Return hwg_MsgInfo( "fileopen - Ok" ) и вызов этой функции - в меню в example.xml - все нормально отрабатывает...

Pasha: А как в letodb\utils\manager\manager.prg увеличить длину строки для ввода имени сервера ? Там используется combobox с редакцией: @ 10,2 COMBOBOX oApp:oCombo ITEMS oApp:aServers SIZE 140, 22 EDIT OF oApp:oTool ; ON CHANGE {||onComboChg()} TOOLTIP "Server ip address or name" и можно ввести не более 14 символов, причем напрямую это нигде не задается А имя сервера, если надо сконнектиться через инет, может быть длиииинным.

alkresin: Добавьте STYLE CBS_DROPDOWN+CBS_AUTOHSCROLL

alkresin: Сегодня выложил новый релиз HwGUI - 2.16c build 1002. Мелкие поправки в Windows версии и серьезные - в GTK - версии - полностью переписан движок печати, он теперь основан на родном gtk print и cairo.

AlexMyr: alkresin пишет: Сегодня выложил новый релиз HwGUI - 2.16c build 1002. testip.prg совсем выкинули или просто забыли его записать?

alkresin: Выкинул. Он все равно неправильно работает, с этим hipedit надо разбираться. Думаю, лучше будет реализовать его через hedit, добавив, например, picture @IP.

AlexMyr: Стиль DS_3DLOOK меняет формат представления даты в datepicker, т.е. если без этого стиля формат 08.05.2013, то с этим стилем такой 8 травня 2013р. Так должно быть или все же баг?

alkresin: Это к Билли Гейтсу :). Дело может быть в том, что этот стиль не предназначен для datepicker и соответствующее число для datepicker обозначает нечто совсем иное.

Dima: alkresin пишет: Это к Билли Гейтсу :) Он сюда вряд ли захаживает ;)

Pasha: alkresin пишет: Добавьте STYLE CBS_DROPDOWN+CBS_AUTOHSCROLL Спасибо, так работает.

Vlad04: 1) Пытаюсь собрать huchet. Получаю следующее сообщение об ошибке : Е:\_rprg_V\huchet\source>general.bat Harbour 3.2.0dev (rl303291931) Copyright (c) 1999-2013, http://harbour-project.org/ Compiling 'general.prg'... general.prg(169) Error E0022 Invalid lvalue 'Numeric' general.prg(177) Error E0022 Invalid lvalue 'Numeric' general.prg(185) Error E0022 Invalid lvalue 'Numeric' general.prg(194) Error E0022 Invalid lvalue 'Numeric' general.prg(207) Error E0022 Invalid lvalue 'Numeric' general.prg(215) Error E0022 Invalid lvalue 'Numeric' general.prg(228) Error E0022 Invalid lvalue 'Numeric' general.prg(242) Error E0022 Invalid lvalue 'Numeric' general.prg(258) Error E0022 Invalid lvalue 'Numeric' general.prg(1106) Error E0022 Invalid lvalue 'Numeric general.prg(1112) Error E0022 Invalid lvalue 'Numeric general.prg(1122) Error E0022 Invalid lvalue 'Numeric general.prg(1129) Error E0022 Invalid lvalue 'Numeric general.prg(1138) Error E0022 Invalid lvalue 'Numeric general.prg(1144) Error E0022 Invalid lvalue 'Numeric general.prg(1153) Error E0022 Invalid lvalue 'Numeric 16 errors 2) Разборка примера example На форму добавил, к примеру, кнопку. Как по событию Click изменить размеры формы, Заголовок? В xml если написать oForm:Title:='New' не срабатывает.

AlexMyr: Александр, функция HWG_HFRM_STR2ARR в gtk версии и HFRM_STR2ARR в win версии (файл hfrmtmpl.prg) обнаружил при сборке huchet.

AlexMyr: Vlad04 пишет: Пытаюсь собрать huchet. Сделал изменения в huchet, теперь собирается под hwgui_216c, для этого создал еще файл huchet.hbp, могу выслать изменения если надо.

AlexMyr: По разному обрабатывается color_3dlight, в текущей версии (черный фон) и 216с (серый фон) [pre2] #include "windows.ch" #include "guilib.ch" func main() local oMainWnd INIT WINDOW oMainWnd MAIN TITLE "color3dlight" color COLOR_3DLIGHT; AT 0,0 SIZE 800,400 oMainWnd:Activate() return nil[/pre2]

PSP: AlexMyr пишет: По разному обрабатывается color_3dlight, в текущей версии (черный фон) и 216с (серый фон) А версия Харбор одинаковая?

AlexMyr: PSP пишет: А версия Харбор одинаковая? Да, Version: Harbour 3.2.0dev (r1305100828) Compiler: MinGW GNU C 4.7.2 (32-bit) Platform: Windows Vista 6.0.6002 Service Pack 2

Vlad04: AlexMyr Сделал изменения в huchet , могу выслать изменения если надо. Надо . email: orsv04 sobaka mail.ru А вообще, идея HwGUI пока непонятна. Смотрим вышеизложенный пример. Переменная локальная local oMainWnd , инициализирует ГЛАВНОЕ окно. Видимость её в пределах функции!

AlexMyr: Vlad04 пишет: Надо . email: Выслал Vlad04 пишет: А вообще, идея HwGUI пока непонятна. Идея иметь Gui. , а по поводу Vlad04 пишет: Смотрим вышеизложенный пример. Переменная локальная local oMainWnd , инициализирует ГЛАВНОЕ окно. Видимость её в пределах функции! и что настораживает?

Vlad04: Идея иметь Gui Это цель. и что настораживает? На форме , к примеру есть контролы. Генерируем событие какого нибудь контрола, меняющие свойства ГЛавного ОКНА или другого контрола. Как в данном случае сделать ? Я уже писал, выражение - oMainWnd:title:='New' не прокатывает. В других системах с учетом специфики их грамматики( MiniGUI, Делфи) все нормально

AlexMyr: Vlad04 пишет: Я уже писал, выражение - oMainWnd:title:='New' не прокатывает. В других системах с учетом специфики их грамматики( MiniGUI, Делфи) все нормально Для hwgui делаем так #include "windows.ch" #include "guilib.ch" func main() local oMainWnd INIT WINDOW oMainWnd MAIN TITLE "color3dlight" color COLOR_3DLIGHT; AT 0,0 SIZE 800,400 on init {|o|hwg_SetWindowText(o:handle,o:title+=", "+dtos(date()))} oMainWnd:Activate() return nil

alkresin: AlexMyr пишет: По разному обрабатывается color_3dlight, в текущей версии (черный фон) и 216с (серый фон) Изначально цвет, указываемый после COLOR, обозначал системный цвет Windows, все эти COLOR_3DLIGHT и др. - из Windows API. В текущей версии, действительно, как я вижу, это дело изменено, константа типа COLOR_3DLIGHT не имеет значения, ее код ( 22 ) интерпретируется как сконвертированное из RGB long int код цвета, которым заполняется окно при обработке события WM_PAINT.

alkresin: Vlad04 пишет: Переменная локальная local oMainWnd , инициализирует ГЛАВНОЕ окно. Видимость её в пределах функции! Объект, указывающий на главное окно, всегда можно получить при помощи HWindow():GetMain()

alkresin: Vlad04 пишет: А вообще, идея HwGUI пока непонятна Хороший вопрос :). Идея, замысел HwGUI - небольшая, компактная, быстрая, легко расширяемая GUI библиотека. Ее инструментарий должен быть минимален, но достаточен для реализации любых GUI интерфейсов. Необходимый минимум переменных и методов классов - чем их меньше, тем быстрее работает программа - не забывайте, что это не C, здесь при обращении к любой переменной (или методу) объекта происходит поиск этой переменной. Да, этот поиск реализован эффективно, это не перебор элементов массива, сопровождаемый сравнением строковых имен, но, тем не менее, чем меньше данных у объекта, тем быстрее происходит обращение к ним. Ну и, чем меньше кода, тем легче с ним разбираться ( при нормальной структурированности ). Есть желание/необходимость расширить функциональность какого-либо класса - лучше всего для этого создать класс - наследник, и там уже реализовать все, что душе угодно; в некоторых случаях достаточно использовать кодоблоки - элементы существующего класса - :bPaint для отрисовки окна, :bOther - для обработки сообщений, не обрабатываемых этим классом и др.

Vlad04: Идея понятна, реализация нет :bPaint для отрисовки окна, :bOther - для обработки сообщений, не обрабатываемых этим классом и др Примеры нужны. Попробовал "как обычно" - не получаются и элементарные действия. У меня сложные Get формы редактирования browse. С проверкой условий ДО, ПОСЛЕ, передачей фокуса , изменением шаблона редактирования Edit одних полей по условиям других. Картотека, словом .

AlexMyr: Vlad04 пишет: Примеры нужны. Посмотрите примеры из hwgui/samples/get, да и вообще все примеры в hwgui/samples

alkresin: Vlad04 пишет: У меня сложные Get формы редактирования browse. С проверкой условий ДО, ПОСЛЕ, передачей фокуса , изменением шаблона редактирования Edit одних полей по условиям других. Условия ДО, ПОСЛЕ реализованы в hbrowse - у hcolumn есть соответствующие кодоблоки :bWhen, bValid. Кроме того, вы можете изменить стандартный редактор ячейки ( метод :Edit() ), установив кодоблок oBrowse:bEnter, пример реализации посмотрите в hwgui/utils/dbc/dbchw.prg - там :bEnter указывает на функцию EdRec(), реализующую свой редактор ячейки, там как раз и "изменение шаблона редактирования Edit одних полей по условиям других" есть.

alkresin: Обновил Huchet. Исходники программы - мои рабочие на сегодняшний день, xml файлы примеров приведены в соответствие с HwGUI 2.16c ( изменены названия функций ).

AlexMyr: alkresin пишет: Обновил Huchet. Скачал, собрал - все нормально. Запускаю, вхожу в меню модуль\банк и получаю Error DBFNTX/1201 Файл не индексирован Called from ->DBSEEK(0) Called from general.prg->(b)READTBINFO(459) Called from source\hbrowse.prg->FLDSTR(1904) Called from source\hbrowse.prg->HBROWSE:LINEOUT(1048) Called from source\hbrowse.prg->HBROWSE:PAINT(760) Called from source\hbrowse.prg->HBROWSE:ONEVENT(300) Called from ->HWG_REDRAWWINDOW(0) Called from source\hbrowse.prg->HBROWSE:REFRESH(1870) Called from general.prg->HSUBSYS:RUN(1226) Called from general.prg->(b)SETWINDOW(157) Called from source\hwindow.prg->ONCOMMAND(508) Called from source\hwindow.prg->(b)HMAINWINDOW(227) Called from source\hwindow.prg->HMAINWINDOW:ONEVENT(303) Called from ->HWG_ACTIVATEMAINWINDOW(0) Called from source\hwindow.prg->HMAINWINDOW:ACTIVATE(292) Called from general.prg->MAIN(138) HWGUI 2.16c Build 1002 Harbour 3.2.0dev (r1304251940) Date:15/05/13 Time:12:32:32 Поискал ф-ю переиндексации - нет такой, или плохо искал

alkresin: А почему сообщения - DBFNTX ? Вы, кажется, собираете при помощи своего hbp ? Надо там прописать опцию компиляции -dRDD_CDX, или собирать приложенным bat'ником. Индексы все - cdx.

AlexMyr: alkresin пишет: -dRDD_CDX помогло, спасибо И если индексы cdx, почему сразу не прописать rddSetdefault("DBFCDX"). Может тогда в general.ini опцию завести?

AlexMyr: А конфигурационные файлы Вы просто в редакторе набираете или есть утилита для этого?

alkresin: AlexMyr пишет: И если индексы cdx, почему сразу не прописать rddSetdefault("DBFCDX") DBFCDX - в этом demo примере, могут быть и другие RDD - Leto, Ads, да и DBFNTX теоретически может быть. Может тогда в general.ini опцию завести? Есть там такие опции - cDefDriver, например, datalias - только тогда надо его скомпилировать с поддержкой всех нужных RDD. А конфигурационные файлы Вы просто в редакторе набираете или есть утилита для этого? В редакторе.

Vlad04: Программа: dbchw.exe файл: dbchw.prg строка 744 Функция FUNCTION Calcul() Добавил кнопку очистить поле от предыдущих данных @ 50,70 BUTTON "CLear " SIZE 80, 26 on CLICK {||cExpr:=Space(290)} Как я написал не работает. Как правильно написать ?

AlexMyr: Вот так: @ 100,10 GET oExpr VAR cExpr SIZE 290,24 Atail( oDlg:aControls ):Anchor := ANCHOR_TOPABS+ANCHOR_LEFTABS+ANCHOR_RIGHTABS @ 10,40 BUTTON "Calc it!" SIZE 80, 26 ON CLICK bCalcBtn @ 50,70 BUTTON "CLear " SIZE 80, 26 on CLICK {||cExpr:=Space(290),oExpr:Refresh(),oExpr:SetFocus()}

Vlad04: Все ок! Но здесь и замена переменных И дополнительные функции.

AlexMyr: Vlad04 пишет: Но здесь и замена переменных И дополнительные функции. Ну так Вы ж кнопку добавили и хотите какие-то действия совершать.

AlexMyr: AlexMyr пишет: @ 50,70 BUTTON "CLear " SIZE 80, 26 on CLICK {||cExpr:=Space(290),oExpr:Refresh(),oExpr:SetFocus()} Можно немного укоротить @ 50,70 BUTTON "CLear " SIZE 80, 26 on CLICK {||oExpr:Value(Space(290)),oExpr:SetFocus()} Vlad04 пишет: Но здесь и замена переменных переменная так и осталась cExpr, добавился только объект oExpr, вот кусок из guilib.ch #xcommand @ <x>,<y> GET [ <oEdit> VAR ] <vari> ; вот этот объект мы и используем.

Vlad04: А нельзя ли ещё как нибудь наладить работу с буфером обмена? @ 120,70 BUTTON " Mem=> " SIZE 80, 26 //ON CLICK @ 230,70 BUTTON " =>Mem " SIZE 80, 26 //ON CLICK Здесь даже не представляю , что можно писать

alkresin: А hwg_CopyStringToClipboard( cString ) и hwg_GetClipboardText( hwg_GetActiveWindow() ) пробовали ?

AlexMyr: Александр, откорректировал dbchw.rc для сборки с mingw, вот он [pre2]DBC ICON "dbc.ico" BMP_ABOUT BITMAP "dbc.bmp" TOP BITMAP "../../samples/image/top.bmp" BOTTOM BITMAP "../../samples/image/bottom.bmp" NEXT BITMAP "../../samples/image/next.bmp" PREV BITMAP "../../samples/image/previous.bmp" OPEN BITMAP "../../samples/image/open.bmp"[/pre2] т.е. заменил \ на /, будет ли он собираться под bcc без ошибок, если да, то можно тогда его на svn закинуть.

alkresin: Да, собирается нормально с bcc.

Vlad04: Как не странно все получилось ! @ 120,70 BUTTON " Mem=> " SIZE 80, 26 ON CLICK {||cExpr:=Trim(cExpr)+HWG_GETCLIPBOARDTEXT( hwg_GetActiveWindow() ),oExpr:Refresh(),oExpr:SetFocus()} @ 230,70 BUTTON " =>Mem " SIZE 80, 26 ON CLICK {||hwg_CopyStringToClipboard( oSayRes:GetText )}

Vlad04: Продолжаю дальше "мучить" HwGUI, разбираем события ДО, ПОСЛЕ. Пример на закладке ...\utils\designer\samples\ , построенный с помощью designer. Form1 -testget1.xml. Добавляю в событие onLostFocus editbox пока только информационное сообщение - hwg_msgInfo('Lost'). Запускаю программу, открываю форму, покидаю editbox, получаю сообщение " Lost " и дальше ошибка в - hedit.prg Error BASE/1066 Argument error: conditional Called from source\hedit.prg->__VALID(746) Called from source\hedit.prg->(b)HEDIT_NEW(86) Called from source\hdialog.prg->ONDLGCOMMAND(305) Called from source\hdialog.prg->(b)(_INITSTATICS00003)(0) Called from source\hdialog.prg->HDIALOG:ONEVENT(159) Called from ->HWG_SETFOCUS(0) Called from source\hedit.prg->HWG_GETSKIP(930) Called from source\hedit.prg->HEDIT:ONEVENT(191) Called from ->HWG_DLGBOXINDIRECT(0) Called from source\hdialog.prg->HDIALOG:ACTIVATE(125) Called from source\hfrmtmpl.prg->HFORMTMPL:SHOW(392) Called from source\hfrmtmpl.prg->(b)COMPILEMETHOD(495) Called from source\hownbtn.prg->HOWNBUTTON:MUP(364) Called from source\hownbtn.prg->HOWNBUTTON:ONEVENT(139) Called from ->HWG_ACTIVATEMAINWINDOW(0) Called from source\hwindow.prg->HMAINWINDOW:ACTIVATE(292) Called from source\hfrmtmpl.prg->HFORMTMPL:SHOW(392) Called from source\hfrmtmpl.prg->(b)HFORMTMPL(135) Called from source\hfrmtmpl.prg->HFORMTMPL:SHOWMAIN(0) Called from example.prg->MAIN(17) HWGUI 2.16c Build 1002 Harbour 3.2.0dev (r1304301343) Date:05/20/13

AlexMyr: Vlad04 пишет: разбираем события ДО, ПОСЛЕ. Должно возвращать логическое значение .T. or .F.

Vlad04: Добавил Return .t. И ошибки нет, поле можно покинуть При Return .f. остаешься на поле

alkresin: Так и должно быть. Возвращаемое значение определяет, можно ли покинуть поле.

Vlad04: Что можно располагать в xml( предполагаю простые конструкции) , а что в prg (наверно, что посложнее ?). Мне надо для покидаемого поля расчитывать значение и его присвоить ему в зависимости от: 1) значений КОНТРОЛОВ на главной форме 2) + значений КОНТРОЛОВ текущей формы 3)+ по их сочетанию найти значение в базе И ещё, возможно или нет. События До, ПОСЛЕ только у editbox. Желательно и у других КОНТРОЛОВ, даже у кнопки ОК. Перед закрытием формы проверить корректность введенного . Для DatePicker ,для editbox и других КОНТРОЛОВ с численными данными ввести в свойства Минимальное и Максимальное значение

alkresin: Vlad04 пишет: Что можно располагать в xml( предполагаю простые конструкции) , а что в prg (наверно, что посложнее ?) Здесь нет никаких заданных рамок, распределение кода между prg и xml определяется вашими собственными предпочениями, вашими требованиями к структуре программы. Я исхожу из следующих критериев: 1) В приложении есть низ и верх, базовая часть и надстройка. Базовай частью является исполняемый файл ( скомпилированные prg ), надстройкой - xml, ini и пр., где содержится код, модифицирующий работу исполняемого файла. Я исхожу из того, что если какой-либо элемент ( КОНТРОЛ, например) определен в надстройке, то и обслуживающий его код должен помещаться там же, а не в базовой части. В моем понимании правильная структура - это когда "низ" не "знает" ничего о том, что есть "наверху", базовая часть независима от надстройки. 2) Повторяющиеся фрагменты кода, имеющие определенный универсальный смысл, лучше оформлять в виде функций так, чтобы там не было ссылок на конкретные элементы, определенные в xml и помещать в prg. 3) Критичные к скорости исполнения фрагменты, выполняющиеся в цикле, тожу лучше помещать в prg. События До, ПОСЛЕ только у editbox. Желательно и у других КОНТРОЛОВ, даже у кнопки ОК. Не только у editbox, еще у чего-то есть. На некоторые можно будет завести, поскольку они предусмотрены в соответствующих классах HwGUI. Перед закрытием формы проверить корректность введенного А что мешает повесить эту проверку на onclick кнопки, закрывающей форму, или на onDlgExit ? Для DatePicker ,для editbox и других КОНТРОЛОВ с численными данными ввести в свойства Минимальное и Максимальное значение Если есть обработчик ПОСЛЕ, он это и должен делать.

AlexMyr: Vlad04 пишет: Что можно располагать в xml( предполагаю простые конструкции) , а что в prg (наверно, что посложнее ?). С какой стороны посмотреть на код, с одной стороны может быть он и сложный, а с другой вроде и нет, решать вам. Можно писать в xml, а при возникновении проблем, вынести кусок кода в prg. Vlad04 пишет: Мне надо для покидаемого поля расчитывать значение и его присвоить ему в зависимости от: 1) значений КОНТРОЛОВ на главной форме 2) + значений КОНТРОЛОВ текущей формы 3)+ по их сочетанию найти значение в базе Можно сформировать массив со значениями контролов и передать его в вызываемую форму как параметер, а потом использовать, делается так: hformtmpl():read("form.xml"):show(,arr_val) где arr_val - массив значений и делаете что хотите. Можно из формы потом вернуть этот массив или просто значение и на главной форме что-то изменить в зависимости что вернули. Т.е. все можно сделать. Vlad04 пишет: События До, ПОСЛЕ только у editbox. Нет, не только, смотрите классы, которые вас интересуют. Vlad04 пишет: даже у кнопки ОК. Для кнопок есть disable, enable. Vlad04 пишет: Перед закрытием формы проверить корректность введенного Смотрите методы onDlgExit, onFrmExit, проверяете правильность, если правильно enddialog(), если нет указываем на то, что не правильно. Vlad04 пишет: Для DatePicker ,для editbox и других КОНТРОЛОВ с численными данными ввести в свойства Минимальное и Максимальное значение так и проверяйте на выходе из контрола значение которые нужны.

alkresin: Выложил новый релиз HwGUI - 2.16c, build 1003. Кое-какие поправки в gtk - версии и новый GUI отладчик для Harbour - подробнее о нем на этом форуме в разделе Harbour.

Vlad04: Написал небольшую рабочую программу, использую только designer. Часть вопросов ушло, появились новые. 1- Форма - как поймать событие Resize ( изменение размеров формы) - Minimiizebox, Maximizebox не пойму на что влияет. Изменяю, но кнопки на форме остаются - нажатие Tab перемещает курсор , но не на все поля.РадиоГруппа -не заходит, кнопка - не заходит,updown - на один заходит, на другой такой же - нет. - можно или нет сделать ЗАЛИВКУ формы цветом ? - В коде samples встречается задание для формы STYLE WS_DLGFRAME + WS_SYSMENU + DS_CENTER ,в designer такого нет 2 - updown не могу в рамку оформить и др.

AlexMyr: Vlad04 пишет: - как поймать событие Resize ( изменение размеров формы) Посмотрите hwgui\samples\database\dbview.prg Vlad04 пишет: - можно или нет сделать ЗАЛИВКУ формы цветом ? это как в hwgui\samples\all\a.prg ? Vlad04 пишет: - В коде samples встречается задание для формы STYLE WS_DLGFRAME + WS_SYSMENU + DS_CENTER ,в designer такого нет В дизайнере не все реализовано, но можно указать в ручную, например в методе onFormInit, oDlg:style += WS_DLGFRAME + WS_SYSMENU + DS_CENTER

alkresin: Vlad04 пишет: как поймать событие Resize ( изменение размеров формы) В onDlgInit прописываете oDlg:bSize := {|o,x,y| ... } Minimiizebox, Maximizebox Для диалогов я сейчас проверил - работает, для главного окна надо, наверное исправить кое-что. нажатие Tab перемещает курсор , но не на все поля Это не только в формах Дизайнера, я как-то не придавал этому значения. Надо будет в исходниках HwGUI поставить на кнопки и пр. стиль WS_TABSTOP можно или нет сделать ЗАЛИВКУ формы цветом ? Можно попробовать через onPaint ( я сам не пробовал ). Еще один вариант - указать цветную bmp в свойстве bitmap - она заполниет весь фон. В коде samples встречается задание для формы STYLE WS_DLGFRAME + WS_SYSMENU + DS_CENTER ,в designer такого нет Стилей разных в Windows API много, каждый по отдельности добавлять - в Инспекторе заблудишься. Хотя DS_CENTER, наверное, стоит включить. Vlad04 пишет: updown не могу в рамку оформить Попробуйте в bat, которым вы строите программу, включить WindowsXP.Manifest - как в samples/bld.bat

Vlad04: Page control - какие-то неувязки в Дизайнере. Вроде нарисовались закладке, при вторичном открытии - их нет. Однако в Инспекторе видны.Вторично щелкнешь Ок - появились. Начинаешь располагать контролы и при открытии формы закладки задваиваются и в итоге Error BASE/1132 Bound error: array access Called from source\htab.prg->HTAB:SHOWPAGE(218) Called from source\htab.prg->HTAB:CHANGEPAGE(190) Called from source\htab.prg->(b)HTAB_ENDPAGE(161) Called from source\htab.prg->HTAB:NOTIFY(285) ...

Pasha: Можно ли к данным MenuItem дополнительно к паруметру lDisabled добавить блок кода, который определял бы доступность элемента меню ? Примерно как это сделано в fw, там в MenuItem есть параметр bWhen. Я бы и сам попробовал это сделать, просто не представляю, как подступиться.

alkresin: FW я давно уже не видел ... А как это выглядит ? Если блок возвращает .f., элемент становится disabled ( серым ) ?

alkresin: Vlad04 пишет: Page control - какие-то неувязки в Дизайнере. Вроде нарисовались закладке, при вторичном открытии - их нет. Однако в Инспекторе видны.Вторично щелкнешь Ок - появились. У меня все в порядке с этим элементом. Не могли бы вы так описать ситуацию, чтобы я мог повторить эти действия и увидеть проблему ?

Pasha: alkresin пишет: FW я давно уже не видел ... А как это выглядит ? Если блок возвращает .f., элемент становится disabled ( серым ) ? Да, именно так. Для MenuItem задается параметр bWhen, и при выводе меню он автоматически вызывается, если вернет .f. - пункт меню становится неактивным. Я что-то не пойму, в каком месте надо вызывать этот bWhen

alkresin: Я что-то не пойму, в каком месте надо вызывать этот bWhen Наверное, при обработке WM_SYSCOMMAND

Vlad04: Page control - в Дизайнере построен и открывается нормально, а программе нет <?xml version="1.0" encoding="UTF-8"?> <part class="form"> <style> <property name="Geometry">{415,55,740,722}</property> <property name="Caption">[Form1]</property> <property name="FormType">[dlgModal]</property> <property name="lClipper">.F.</property> <property name="lExitOnEnter">.F.</property> <property name="lDebug">.F.</property> <property name="FromStyle">[Popup]</property> <property name="Icon">[]</property> <property name="Modal">.F.</property> <property name="SystemMenu">.T.</property> <property name="Minimizebox">.F.</property> <property name="Maximizebox">.F.</property> <property name="AbsAlignent">.T.</property> <property name="SizeBox">.T.</property> <property name="Visible">.T.</property> <property name="3DLook">.F.</property> <property name="Clipsiblings">.F.</property> <property name="Clipchildren">.F.</property> </style> <part class="page"> <style> <property name="Geometry">{4,0,701,639}</property> <property name="Name">[oPage1]</property> <property name="Tabs">{N1,N2}</property> </style> <part class="PageSheet" page="1"></part> <part class="PageSheet" page="2"> <part class="browse"> <style> <property name="Geometry">{6,94,696,542}</property> <property name="Name">[oBrowse2]</property> </style> </part> </part> </part> <part class="browse"> <style> <property name="Geometry">{4,96,693,544}</property> <property name="Name">[oBrowse1]</property> </style> </part> </part>

AlexMyr: Vlad04 пишет: Page control - в Дизайнере построен и открывается нормально, а программе нет В дизайнере через preview работает? А в проге некорректно отображает, падает или как?

alkresin: Vlad04 пишет: Page control - в Дизайнере построен и открывается нормально, а программе нет В этом примере oBrowse1 на первой странице ( N1 ) не является ее частью - посмотрите на xml код, или попробуйте в дизайнере щелкнуть мышкой по нему - он при этом не выделяется. Наверное, это произошло потому, что его координаты чуть-чуть не вписываются в координаты Page control. Исправить это можно двумя способами: 1) руками отредактировать xml, поместив oBrowse1 в соответствующую страницу и изменив его координаты 2) в Дизайнере - выделить oBrowse1 при помощи инспектора, в инспекторе же увеличить его размер, чтобы можно было потом зацепить его мышкой ( иначе он спрятан за page control ) и тогда уже мышкой уменьшить размер и переместить внутрь page control.

Vlad04: Всё попробовал http://files.mail.ru/955D786FCE094D6EB03E8AC99DE4E216 В дизайнере через preview работает? А в проге некорректно отображает, падает или как? через preview - 2 закладки, запускаешь программу - 4.

AlexMyr: Vlad04 пишет: Всё попробовал http://files.mail.ru/955D786FCE094D6EB03E8AC99DE4E216 В дизайнере записал код как prg, работает нормально, видно не так что-то в hfrmtmpl.prg

alkresin: Vlad04 пишет: через preview - 2 закладки, запускаешь программу - 4. Да, действительно. какая-то ошибка, причем проявляется именно в форме для главного окна - если то же самое в диалоговом окне, то все нормально. Разберемся.

alkresin: Выложил HwGUI 2.16c build 1004 Исправлены некоторые мелочи, в т.ч. с отображением tab control, о чем писал Vlad04. Новая функция hbxml_SetEntity() - об этом писал в разделе [x]Harbour. Последняя версия отладчика. Существенные изменения в gtk версии - теперь рисование производится не устаревшим gdk, а с помощью cairo.

AlexMyr: alkresin пишет: Выложил HwGUI 2.16c build 1004 Александр, тоже что и на svn gcc.exe -c -O3 -march=i586 -mtune=pentiumpro -fomit-frame-pointer -W -Wall -pipe -Ic:/dev/harbour/include -I../../../../include ../../../../lib/.hbmk/win/mingw/hxmldoc.c ../../../../source/xml/xmlparse.c ../../../../source/xml/xmlparse.c: In function 'HB_FUN_HBXML_SETENTITY': ../../../../source/xml/xmlparse.c:79:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] ../../../../source/xml/xmlparse.c:95:17: error: 'ULONG' undeclared (first use in this function) ../../../../source/xml/xmlparse.c:95:17: note: each undeclared identifier is reported only once for each function it appears in ../../../../source/xml/xmlparse.c:95:25: error: expected ';' before 'hb_arrayLen' hbmk2[hbxml]: Error: Running C/C++ compiler. 1

alkresin: AlexMyr пишет: Александр, тоже что и на svn Странно, вроде бы исправлял. Так или иначе - перезалил.

AlexMyr: alkresin пишет: Так или иначе - перезалил. теперь собирается. Спасибо! Еще одно, в 216с hwgdebug.hbp библиотеки -lhwgui.lib -lprocmisc.lib -lhbxml.prg надо указывать без расширений -lhwgui -lprocmisc -lhbxml а лучше использовать hwgui.hbc

AlexMyr: Александр, объясните что это за флаг такой HWG_USE_POINTER_ITEM, то его добавляем, то убираем и какое-то странное поведение hwgui потом получаем. Спасибо.

AlexMyr: Теперь с HWG_USE_POINTER_ITEM имею такой дизайнер с белым фоном

alkresin: AlexMyr пишет: Александр, объясните что это за флаг такой HWG_USE_POINTER_ITEM, то его добавляем, то убираем и какое-то странное поведение hwgui потом получаем. Спасибо. В hwgui/include/guilib.h есть такой фрагмент: #ifdef HWG_USE_POINTER_ITEM #define HB_RETHANDLE( h ) hb_retptr( ( void * ) ( h ) ) #define HB_PARHANDLE( n ) hb_parptr( n ) ... #else #define HB_RETHANDLE( h ) hb_retnl( ( LONG ) ( h ) ) #define HB_PARHANDLE( n ) ( ( LONG ) hb_parnl( n ) ) ... #endif т.е., если стоит HWG_USE_POINTER_ITEM, HB_RETHANDLE( h ) возвращает значение типа HB_IT_POINTER, в противном случае - HB_IT_LONG ( обычное число ). Макрос HB_RETHANDLE( h ) используется в C файлах для возврата всяких указателей на структуры. В данном случае HB_IT_POINTER, в отличие от HB_IT_LONG, работает на всех платформах и компиляторах, в т.ч. и на 64-разрядных. При использовании bcc55 или 32-разрядного Mingw его можно не использовать.

alkresin: AlexMyr пишет: Теперь с HWG_USE_POINTER_ITEM имею такой дизайнер с белым фоном Вижу. В 2.16с, кстати, все нормально ( я сейчас поправил там все сравнения handle с 0 и перестроил его с HWG_USE_POINTER_ITEM ).

Vlad04: Будем двигаться дальше.

alkresin: Произошли изменения в статусе HwGUI. Версия 2.16с, которая была доступна на маем сайте, теперь выгружена на SVN в качестве основной ветки под номером 2.18. Буду постепенно добавлять в нее те новшества из 2.17, которые наиболее востребованы пользователями, но, по-возможности, аккуратно, не ломая структуру библиотеки. Буду продолжать чистку - в 2.16с (теперь уже 2.18) тоже есть фрагменты, которые желательно переделать. Ну и дальнейшее развитие... Надо развивать gtk версию, улучшая ее совместимость с Winapi версией. По отладчику есть что делать - помимо расширения его прямой функциональности планирую довести его до небольшого Builder'а ( собственно, уже начал ). Планов много. Были бы время и энергия :)

Vlad04: Буду постепенно добавлять в нее те новшества из 2.17 2.17 это где? Планов много. Хотелось, чтобы в планах нашел место и дизайнер.

alkresin: 2.17 это где? Это то, что было на Sourceforge в качестве главной ветви.

AlexMyr: Собрал hwgui под fedora 18, зашел в source/gtk и запустил build.sh, появились библиотеки. Потом пробую собрать hwgdebug и получаю следующее: [pre2][omm@localhost debugger]$ hbmk2 hwgdebug.hbp Harbour 3.2.0dev (r1306211258) Copyright (c) 1999-2013, http://harbour-project.org/ Compiling 'hwgdebug.prg'... Lines 4946, Functions/Procedures 53 Generating C source output to '/tmp/hbmk_YEOSoL.dir/hwgdebug.c'... Done. /usr/bin/ld: ../../lib/libhwgui.a(misc.o): undefined reference to symbol 'cos@@GLIBC_2.0' /usr/bin/ld: note: 'cos@@GLIBC_2.0' is defined in DSO /lib/libm.so.6 so try adding it to the linker command line /lib/libm.so.6: could not read symbols: Некоректна дія collect2: error: ld returned 1 exit status hbmk2[hwgdebug]: Error: Running linker. 1 gcc '/tmp/hbmk_YEOSoL.dir/hwgdebug.o' '/tmp/hbmk_YEOSoL.dir/hbmk_Zb6CGl.o' -Wl,--start-group -lhwgui -lprocmisc -lhbxml -lhwgdebug -lhbcplr -lhbdebug -lharbour -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0 -Wl,--end-group -ohwgdebug -L/usr/local/lib/harbour -L../../lib [/pre2] Как правильно собирать под линукс hwgui?

alkresin: Правильно вы собираете, там какая-то проблема с библиотекой математических функций, линкер просит добавить ее в скрипт. Попробуйте сказать это hbmk2 ( библиотека называется m, надо чтоб в списке библиотек стояло -lm ), или удалите из gtk/misc.c функции hwg_sin, hwg_cos.

AlexMyr: alkresin пишет: надо чтоб в списке библиотек стояло -lm добавил, теперь получаю hbmk2: Error: Referenced, missing, but unknown function(s): HWG_SAVEFILE(), HWG_SELECTFOLDER() они в source/winapi/commond.c

AlexMyr: AlexMyr пишет: hbmk2: Error: Referenced, missing, but unknown function(s): HWG_SAVEFILE(), HWG_SELECTFOLDER() исключил ф-ии, собралось, работает Теперь по дизайнеру, не собирается Compiling 'inspect.prg'... inspect.prg(218) Error E0030 Syntax error "syntax error at '@'" 1 error

alkresin: Теперь по дизайнеру, не собирается Во-первых, надо дизайнер тоже из 2.16с использовать, я забыл его залить на место 2.17 - он и под Windows не соберется из-за новых слов в определении некоторых control'ов, в данном случае - combobox'a. Во-вторых, под Linux он в любом случае не соберется из-за richedit, я планирую использовать там тот редактор, что в hwgdebug, когда портирую его под gtk.

AlexMyr: Отправил на dev list, но попал на премодерацию за превышение размера письма, пишу тут. Такая проблема, в отладчике открываю исходник, и не вижу его до тех пор пока курсором не пройдусь по нему.

alkresin: Какая ОС ?

AlexMyr: alkresin пишет: Какая ОС ? Harbour Build Info --------------------------- Version: Harbour 3.2.0dev (r1306101459) Compiler: MinGW GNU C 4.7.2 (32-bit) Platform: Windows XP 5.1.2600 Service Pack 3 PCode version: 0.3 ChangeLog last entry: 2013-06-10 16:59 UTC+0200

AlexMyr: Только что собрал на винь98, та же картина.

alkresin: Разобрался, исправил.

alkresin: HwGUI 2.18 выложен на Sourceforge, чуть позже выложу и на свой сайт.

AlexMyr: alkresin пишет: HwGUI 2.18 выложен на Sourceforge Большое спасибо!

alkresin: Выложил к себе на сайт 2.18 - исходники, сборки для bcc и mingw.

Vlad04: Спасибо большое Вопрос по КомбоБоксу. Отбираю из базы в массив (mDat) уникальные значения. Как правильно передать в комбокос на форме значения массива. Форма построена с использованием designer. <part class="combobox"> <style> <property name="Geometry">{21,45,70,24}</property> <property name="Name">[oCombobox1]</property> <property name="nMaxLines">10</property> <property name="varName">[cCmb1]</property> </style> </part> При инцициализации формы пишу cCmb1:Items:=mDat Не проходит. Спасибо

AlexMyr: Vlad04 пишет: При инцициализации формы пишу Я делаю это при инициализации самого объекта Parameters oCtrl oCtrl:aItems := xArray А у вас похоже ощибка Vlad04 пишет: cCmb1:Items:=mDat есть свойство aItems, а не Items

Vlad04: Все оК! Переходим к Brows. А что за файл bank.xml в huchet\options ? designer не открывается, хотя по содержанию, что-то там про подключение и вывод данных базы.

AlexMyr: Vlad04 пишет: А что за файл bank.xml в huchet\options ? Слабо посмотреть на сайте уважаемого автора http://kresin.ru/huchet.html ?

Vlad04: Да, виноват. Как ни странно, оказывается я его смотрел, раньше и подзабыл( большие перерывы в обновлении системы hwg). Т.е. файл, как я понял, не имеет прямого отношения к GUI интерфейсу. А в чем он создается ? Ручками в редакторе?

AlexMyr: Vlad04 пишет: Т.е. файл, как я понял, не имеет прямого отношения к GUI интерфейсу. А в чем он создается ? Ручками в редакторе? напоминаю, на стр. 7 alkresin пишет: AlexMyr пишет: цитата: А конфигурационные файлы Вы просто в редакторе набираете или есть утилита для этого? В редакторе.

Vlad04: Пример demomaximize.prg из папки samples пытаюсь повторить в Дизайнере. Только вместо меню кнопочки сделал ( но это , думаЮ не принципиально) . Кнопка MaximiZe На событие onClick написал действие oForm:Maximize(). Получаю ошибку Error BASE/1004 Message not found: HFORMTMPL:MAXIMIZE Called from ->__ERRRT_SBASE(0) Called from ../../../tobject.prg->HFORMTMPL:ERROR(0) Called from ../../../tobject.prg->(b)HBOBJECT(0) Called from ../../../tobject.prg->HFORMTMPL:MSGNOTFOUND(0) Called from ../../../tobject.prg->HFORMTMPL:MAXIMIZE(0) Called from source\winapi\hfrmtmpl.prg->(b)COMPILEMETHOD(495) Called from source\winapi\hwindow.prg->ONCOMMAND(516) Called from source\winapi\hwindow.prg->(b)HMAINWINDOW(231) Called from source\winapi\hwindow.prg->HMAINWINDOW:ONEVENT(317) Called from ->HWG_ACTIVATEMAINWINDOW(0) Called from source\winapi\hwindow.prg->HMAINWINDOW:ACTIVATE(306) Called from source\winapi\hfrmtmpl.prg->HFORMTMPL:SHOW(392) Called from source\winapi\hfrmtmpl.prg->(b)HFORMTMPL(135) Called from source\winapi\hfrmtmpl.prg->HFORMTMPL:SHOWMAIN(0) Called from MaxMin.prg->MAIN(6) HWGUI 2.18 Build 1 Date:07/24/13 Time:10:25:31 Все режимы работы с окном не работают, кроме последнего - ОКНО закрывается.

AlexMyr: Vlad04 пишет: Пример demomaximize.prg из папки samples пытаюсь повторить в Дизайнере. пробуйте [pre2] <?xml version="1.0" encoding="UTF-8"?> <part class="form"> <style> <property name="Geometry">{417,204,421,140}</property> <property name="Name">[odlg]</property> <property name="Caption">[Form1]</property> <property name="FormType">[dlgModal]</property> <property name="lClipper">.F.</property> <property name="lExitOnEnter">.F.</property> <property name="lDebug">.F.</property> <property name="FromStyle">[Popup]</property> <property name="Icon">[]</property> <property name="Modal">.F.</property> <property name="SystemMenu">.T.</property> <property name="Minimizebox">.F.</property> <property name="Maximizebox">.F.</property> <property name="AbsAlignent">.T.</property> <property name="SizeBox">.T.</property> <property name="Visible">.T.</property> <property name="3DLook">.F.</property> <property name="Clipsiblings">.F.</property> <property name="Clipchildren">.F.</property> </style> <part class="ownerbutton"> <style> <property name="Geometry">{70,35,109,28}</property> <property name="Name">[oOwnerbutton1]</property> <property name="Caption">[maximize]</property> </style> <method name="onClick"> <![CDATA[odlg:maximize() ]]> </method> </part> <part class="ownerbutton"> <style> <property name="Geometry">{180,35,109,28}</property> <property name="Name">[oOwnerbutton2]</property> <property name="Caption">[exit]</property> </style> <method name="onClick"> <![CDATA[odlg:close() ]]> </method> </part> </part> [/pre2]

alkresin: Vlad04 пишет: На событие onClick написал действие oForm:Maximize() oForm - это не окно, а объект, содержащий описание созданной в дизайнере формы, у него нет метода Maximize() и т.п. Как написал выше Алексей, вам надо использовать oDlg, именно эта переменная указывает на созданное в форме окно.

Vlad04: Все хорошо! Спасибо

Vlad04: Пытаюсь построить brows . За основу беру пример - browse_4.prg. В дизайнере рисую место-положение brows, присваиваю имя. А дальше , я хотел бы , как в примере browse_4, описать brows в программнике. Пишу #include "hwgui.ch" #include "dbstruct.ch" #include "windows.ch" #include "guilib.ch" #include "Directry.ch" #xcommand TRY => BEGIN SEQUENCE WITH s_bBreak #xcommand CATCH [<!oErr!>] => RECOVER [USING <oErr>] <-oErr-> #xcommand FINALLY => ALWAYS static s_bBreak := { |oErr| break( oErr ) } Function Main Local nAdd_Code:=0 lOCAL cCmb1,nCmb2 PUBLIC sPAR1:="" ,mMKB:={},mTarif_Type:={0,1},mLeveL:={1,2},mADD:={},mSpec:={} Private oDlg,oBrw1 Private sPar1:=DISKNAME() +':\'+CURDIR()+'\',oExcel REQUEST DBFCDX , DBFFPT REQUEST HB_CODEPAGE_RU1251 SET DELETED ON SET DATE BRITISH SET CENTURY ON SET EPOCH TO year(Date()) -90 //1925 Select 0 Use (sPar1+"Data\PRICE_S.DBF") Via "DBFCDX" alias Price_s *--------------- oBrw1:alias := "Price_s" oBrw1:aColumns := {} ADD COLUMN FieldBlock(Price_s->(Fieldname(1)) ) TO oBrw1 ; HEADER '№1'; LENGTH 6 ; EDITABLE ; JUSTIFY HEAD DT_CENTER ; JUSTIFY LINE DT_RIGHT .... oForm := HFormTmpl():Read(sPar1+ "Xml\Tarif.xml" ) oForm:ShowMain() Return Nil Не работает, получаю сообщение об ошибке : - Alias, aColumns и т.д. Еще пробовал несколько подобных вариантов

AlexMyr: Vlad04 пишет: Пытаюсь построить brows бросьте сюда файлы, чтоб посмотреть что вы делаете.

Vlad04: Brows

AlexMyr: Proc Brws_Init() заменить на Proc Brws_Init(obrw1) в xml для browse init: Parameters oCtrl Brws_Init(oCtrl) //oBrw1:Refresh() пробуйте.

Vlad04: Brows отображается.!!! oCtrl Это что за параметр, вроде нигде не объявлял. И еще как получить значение элемента комбобокса?

AlexMyr: Vlad04 пишет: Это что за параметр, вроде нигде не объявлял. В окне редактора есть пункт Parameters, при выборе которого вставляется строка "Parameters oCtrl" там где можно, и дальше можна манипулировать oCtrl вместо имени объекта. Vlad04 пишет: И еще как получить значение элемента комбобокса? В object inspector установите параметер для varName, вот его и смотрите.

Vlad04: В object inspector установите параметер для varName Установлено , переменная -cCmb1. Элементы комбокса я заполняю присваивая значения массива - cCmb1:aItems:=mMkb. Далее.. Пользователь выбрал элемент комбокса. Как получить: - позицию , которую выбрали - значение выбранной позиции Вроде GetValue() что-то должна возвращать. Но получаю ошибку

AlexMyr: Vlad04 пишет: Пользователь выбрал элемент комбокса. Как получить: - позицию , которую выбрали - значение выбранной позиции посмотрите пример hwgui\utils\designer\samples\testget1.xml

Vlad04: Вообщем, модефицировал пример - samples , под мои условия , все работает. Значение Varname - это индекс в массиве, oCombo:aItems[cm] - это значение выбранной позиции. Но повторить на моем примере не удается. Может это то же связано с формами - у меня главная , здесь подчиненная? Samples измененный

AlexMyr: Vlad04 пишет: Но повторить на моем примере не удается. Если вы про Tarif, то у вас там есть объект oCombobox1 и переменная cCmb1 и этой cCmb1 вы присваиваете массив cCmb1:aItems:=mMkb, а свойство aItems есть у oCombobox1 и поэтому лучше в методе onInit для комбобокса написать след. Parameters oCtrl cCtrl:aItems:=mMkb Еще раз внимательно посмотрите на Name и VarName в samples и у себя в примере.

Vlad04: Да , программка Tarif Привел наименование переменных , как в samples .: т.е. Name - oCombo, VarName - cm. Прогграмма получилась почти рабочей при следующих назначениях Комбобокс получает значения следующим образом Parameters cm cm:aItems:=mMkb Выбраное значение (по событию чек Фильтр) я получаю , как Local sStr:='' sStr:="cCmb1 MKB - "+ cm hwg_Msginfo('sStr = '+sStr) Что совсем не так как в основном Примере- samples. Осталось проверить в моей программе открытие подчиненной формы. Tarif_130729

AlexMyr: Vlad04 пишет: Tarif_130729 в oCombo cсвойство lText поставить false, затем в Proc StazFiltr() надо не cm а str(cm), т.к. cm в данном случае числовой тип, и return NIL заменить на return .T.

Vlad04: Заключение. Поэксперементировал еще раз с samples. Разместил на главной форме Комбобокс. Если данные загружены а Дизайнере , то разницы нет, где находится Комбобокс - на главной форме или подчиненной. Если данные подгружаются из массива, то почему то нужно загрузку делать через VarName для главной формы с передачай параметров ,а для подчинееной формы через имя объекта Name ,без передачи параметров.Вряд ли это так задумывалось(т.е. разное поведение в зависомости от вида формы).

Vlad04: samples Здесь несколько переименованных файлов example.xml, example2.xml,example3.xml с вариантами анализа

AlexMyr: Vlad04 пишет: на главной форме или подчиненной. Что вы подразумеваете под этими понятиями?

Vlad04: на главной форме или подчиненной. На главной - с которой программа стартует В samples - это example.xml подчиненная - testget1.xml

AlexMyr: Vlad04 пишет: Если данные подгружаются из массива, то почему то нужно загрузку делать через VarName для главной формы с передачай параметров ,а для подчинееной формы через имя объекта Name ,без передачи параметров.Вряд ли это так задумывалось(т.е. разное поведение в зависомости от вида формы). Первое, нет тут никакой главной и подчинненой формы, если ошибаюсь укажите связь между ними. Второе и главное, если для контрола в методе возможно вставить строку Parameters oCtrl, то чтобы вы там не писали Parameters nCmb1, или Parameters oskjhs, или Parameters AnyOtherText здесь подразумевается, что этот параметр всегда ссылается на имя контрола а не на переменную, как вы думаете, и потому когда вы в example.xml написали Parameters nCmb1 в onInit для Combobox, то nCmb1 == oCombobox1.

Vlad04: Первое, нет тут никакой главной и подчинненой формы, Главная всегда есть( так называемая main). Остальные формы - не главные. Так вон на НЕ главной форме передать данные в Комбобокс можно так - (Name - имя Комбобокса):aItems := МассивЗначений. А на ГЛАВНОЙ значения в комбобокс из массива можно передать только так - Parameters (VarName имя) (VarName имя):aItems := МассивЗначений. С oCtrl еще не проверял. И речь идет только о загрузке в комбобкс данными из массива. При назначении значений Items в Дизайнере поведение комбоксов во всех формах одинаковое.

Vlad04: Вопрос к Александру. Лето закончилось, в отпусках, наверно, все побывали. А теперь о деле. Следует ли ожидать обновления hwgui (устранение мелких, но неприятных недочетов, о которых выше писалось) ? Спасибо

alkresin: Vlad04 пишет: Следует ли ожидать обновления hwgui (устранение мелких, но неприятных недочетов, о которых выше писалось) ? Обновления, безусловно, будут. Было бы хорошо, если бы вы составили список недочетов, чтобы не просматривать все страницы.

Vlad04: ок В выходные

Vlad04: Forma (строим только в designer): 1)Главная Поддержка MinimezeBox , MaximezeBox ,перемещение между компонентами по Tab, событие Resize - изменение размеров формы, цвет заливки для Формы 2) Унификация свойств главной и не главной форм Комбобокс На НЕ главной форме передать данные в Комбобокс можно так - (Name - имя Комбобокса):aItems := МассивЗначений. А на ГЛАВНОЙ значения в комбобокс из массива можно передать только так - Parameters (VarName имя) (VarName имя):aItems := МассивЗначений. Речь идет только о загрузке в комбобкс данными из массива. При назначении значений Items в Дизайнере поведение комбоксов во всех формах одинаковое.

Pasha: Александр, не могли бы Вы посмотреть manage.prg из letodb ? Для сборки надо добавить префикс hwg_ к нескольким функциям, но собранная утилита неправильно обновляет экран. Достаточно сделать коннект к серверу, чтобы увидеть эффект.

alkresin: Pasha пишет: собранная утилита неправильно обновляет экран. Я вижу, что при переключении на users колонки, начиная со второй, куда-то пропали. Вы об этом ?

AlexMyr: alkresin пишет: Я вижу, что при переключении на users колонки, начиная со второй, куда-то пропали. Вы об этом ? таже проблема.

alkresin: Если дело было в колонках - исправил, залил на CVS manage.prg.

AlexMyr: Александр, колонки на месте, но еще бы прошлись snr2 по manage.prg hbmk2: Error: Referenced, missing, but unknown function(s): SENDMESSAGE(), GETEDITTEXT(), MSGSTOP(), MSGYESNO()

alkresin: А, ну да... Забыл. Сейчас исправлю

Pasha: AlexMyr пишет: Если дело было в колонках - исправил, залил на CVS manage.prg. Спасибо. Я собирал с hwgui от июня этого года, возможно, с той сборкой были проблемы. Во всяком случае, сейчас все нормально.

Pasha: Все-таки странно работает magage из letodb После запуска oApp:aServers заполняется из xml, oApp:oCombo формируется, oApp:oCombo:aItems имеет 3 элемента, но визуально комбобокс пустой. И еще предложение по поводу отладчика: можно ли добавить в Object inspector и Array inspector вложенные вызовы для просмотра объектов и массивов ?

alkresin: Pasha пишет: После запуска oApp:aServers заполняется из xml, oApp:oCombo формируется, oApp:oCombo:aItems имеет 3 элемента, но визуально комбобокс пустой. Если manage.exe запускается с параметром, в котором указан путь к серверу, и этот путь есть в xml, то он появляется в строке комбобокса. А что нужно туда помещать, если параметр не указан ? Первый элемент из списка ? И еще предложение по поводу отладчика: можно ли добавить в Object inspector и Array inspector вложенные вызовы для просмотра объектов и массивов ? Это как ?

AlexMyr: alkresin пишет: цитата: И еще предложение по поводу отладчика: можно ли добавить в Object inspector и Array inspector вложенные вызовы для просмотра объектов и массивов ? Это как ? наверное это Паша имеет ввиду: alkresin пишет: Выложил новую версию отладчика - 2.02. Добавлен просмотр массивов, объектов, private, public, static переменных, текущей записи БД. Подробности - на сайте и в readme.

alkresin: Все равно не понял. Что подразумевается под вложенными вызовами из Object inspector и Array inspector ?

Pasha: alkresin пишет: Все равно не понял. Что подразумевается под вложенными вызовами из Object inspector и Array inspector ? Если элементом объекта или массива является объект или массив, хорошо бы иметь возможность просмотреть его содержимое, кликнув на этот элемент. Сейчас это можно сделать только для 1-й размерности массива, и объекта. А к содержимому, к примеру, HCombobox:aItems из отладчика уже доступа нет.

alkresin: Pasha пишет: А к содержимому, к примеру, HCombobox:aItems из отладчика уже доступа нет. Доступ есть, из командной строки: :inspect oCombobox:aItems но, конечно, кликнуть по строчке - удобнее. Сделаю.

vladru: Собрал пример hwgui\samples\demodbf.prg В диалоге (Tel_Ferramentas) при нажатии кнопки New или Edit программа вылетает по ошибке. Вот Error.log: Error HCUSTOMWINDOW/0 Invalid class member Called from source\winapi/hcwindow.prg->HEDIT:HWG_SETFOCUS(203) Called from demodbf.prg->(b)CADASTRO(77) Called from source\winapi/hownbtn.prg->HOWNBUTTON:MUP(364) Called from source\winapi/hownbtn.prg->HOWNBUTTON:ONEVENT(139) Called from ->HWG_DLGBOXINDIRECT(0) Called from source\winapi/hdialog.prg->HDIALOG:ACTIVATE(136) Called from demodbf.prg->CADASTRO(116) Called from demodbf.prg->(b)MAIN(36) Called from source\winapi/hwindow.prg->ONCOMMAND(523) Called from source\winapi/hwindow.prg->(b)HMAINWINDOW(231) Called from source\winapi/hwindow.prg->HMAINWINDOW:ONEVENT(317) Called from ->HWG_ACTIVATEMAINWINDOW(0) Called from source\winapi/hwindow.prg->HMAINWINDOW:ACTIVATE(306) Called from demodbf.prg->MAIN(47) HWGUI 2.18 Build 1 Date:28/10/2013 Time:15:02:08 Пустая БД (FORNECED.dbf) создается без ошибок. Но даже если в неё руками добавить несколько не пустых записей, то значения их полей всё-равно не отображаются в диалоге. Другие примеры использующие БД, например dbview.prg, работают правильно, и записи в БД добавляют. Win7. Пробовал компилятор harbour 3.0.0. + MinGW из стандартной поставки. И собранный bcc harbour 3.2.0. + bcc. Ошибка одна и таже. Пробовал запускать exe`ник от администратора - не помогает. Не знаю как искать причину, но очень хотелось бы разобраться. В том числе и для того чтобы понять как искать баг (если он есть). Может кто-нибудь попробует собрать этот пример у себя чтобы понять есть ли ошибка в самой программе или это проблемы моего окружения?

AlexMyr: vladru пишет: В диалоге (Tel_Ferramentas) при нажатии кнопки New или Edit программа вылетает по ошибке. Вот Error.log: Замените hwg_setfocus() на setfocus т.к. в классе hControl есть метод setfocus()

vladru: AlexMyr пишет: Замените hwg_setfocus() на setfocus т.к. в классе hControl есть метод setfocus() спасибА. Теперь работает.

vladru: Пробую разобраться с Дизайнером изучая huchet... Заинтересовало создание/распечатка, отчетов как например платежное поручение в huchet. Но форма отчета для того же плат.поручения (plat.xml) у меня в дизайнер не загружается... А как же отчеты создавать и редактировать ? И еще вопрос: при построении примеров из \designer\samples получаю: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Fatal: Unable to open file 'RTL.LIB' А где её взять ?

AlexMyr: vladru пишет: Заинтересовало создание/распечатка, отчетов как например платежное поручение в huchet. Но форма отчета для того же плат.поручения (plat.xml) у меня в дизайнер не загружается... А как же отчеты создавать и редактировать ? Если просто запустить designer.exe, то это дизайнер форм, если с опцией -r так designer.exe -r, то будет работать дизайнер отчетов.

AlexMyr: vladru пишет: И еще вопрос: при построении примеров из \designer\samples получаю: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Fatal: Unable to open file 'RTL.LIB' А где её взять ? Не знаю как вы собираете, а я с помощью hbp файла ../../../hwgui.hbc example.prg

vladru: AlexMyr Я собирал через bldexam.bat, который в samples лежит... А как Вы указали (hbmk2 ../../../hwgui.hbc example.prg) собралось.

vladru: AlexMyr Про дизайнер отчетов спасибо. А можно создать внутри отчета повторяющуюся часть, чтобы, например, список отобранных платежек вывести? Может ещё где-то можно посмотреть примеры формирования отчетов?

AlexMyr: vladru пишет: А можно создать внутри отчета повторяющуюся часть, чтобы, например, список отобранных платежек вывести? Создайте PrintArea и задайте AreaType = Table, потом задаете в методе onNextLine обработку для таблицы. Смотрите пример отчета hwgui\utils\designer\samples\testrep1.xml

AlexMyr: Александр, какие-то проблемы при сборке hwgui под linux, смотрите https://groups.google.com/forum/#!topic/harbour-users/dXzeCQyiRnI, под виндой нормально.

alkresin: AlexMyr пишет: какие-то проблемы при сборке hwgui под linux Поправил, спасибо за информацию.

AlexMyr: Александр, хотел переделать в дизайнере richedit на hcedit, но получается что hcedit валится при работе в init dialog (Called from HCEDIT:SETTEXT(747) in source\common\editor\hcedit.prg) , при init window работает. [pre2]#include "hwgui.ch" FUNC Main() LOCAL oDlg, oText INIT dialog oDlg at 0, 0 size 500, 400 oText := HCEdit():New( oDlg,,, 010, 010, 450, 350 ) oText:oHili := Nil oText:SetText("sdklfsdkfj") odlg:activate() RETURN NIL [/pre2] Получается при init window - oText:hEdit это pointer, а при init dialog - oText:hEdit это object.

alkresin: AlexMyr пишет: хотел переделать в дизайнере richedit на hcedit Дело хорошее. Получается при init window - oText:hEdit это pointer, а при init dialog - oText:hEdit это object. Нет, не объект, а Nil ("U"). В отличие от главного окна при создании диалога все handle инициализируются только после activate dialog - это особенность WinAPI

alkresin: Мда... В диалоге он не работает, надо поправить кое-что.

alkresin: Поправил. И заодно сделал, чтобы :Settext() в диалоге можно было вызывать до активации.

AlexMyr: alkresin пишет: Поправил. И заодно сделал, чтобы :Settext() в диалоге можно было вызывать до активации. Спасибо, попробую с понедельника поработать над дизайнером.

vladru: Наткнулся на такую проблему: в немодальном диалоге не выводится текст через SAY, хотя в таком же диалоге, но активированном как модальный, всё работает. Вот пример: #include "hwgui.ch" Function Main Local oMainWindow INIT WINDOW oMainWindow MAIN TITLE "Example" ; AT 200,0 SIZE 400,150 MENU OF oMainWindow MENUITEM "&Exit" ACTION hwg_EndWindow() MENUITEM "&Show" ACTION DlgWait() ENDMENU ACTIVATE WINDOW oMainWindow Return Nil Static Function DlgWait() Local oDlg INIT DIALOG oDlg AT 0,0 SIZE 200,70 ; STYLE DS_CENTER + WS_SYSMENU @ 10, 10 SAY "Wait, please 2 sec." SIZE 180,20 ACTIVATE DIALOG oDlg NOMODAL oDlg:Show() Inkey(2) oDlg:Close() Return oDlg Если при активации диалога убрать NOMODAL, то надпись "Wait, please 2 sec." будет видна, а c NOMODAL висит окошко без надписи и убирается через 2 секунды.... Хотелось бы разобраться.

alkresin: Функция Inkey() не должна использоваться в GUI приложениях, там используется иной механизм ввода/вывода, она только для консоли. Используйте таймер: STATIC FUNCTION DlgWait() LOCAL oDlg, oTimer INIT DIALOG oDlg TITLE "1" AT 0, 0 SIZE 200, 80 ; STYLE DS_CENTER + WS_SYSMENU + WS_VISIBLE @ 10, 10 SAY "Wait, please 2 sec." SIZE 180, 20 ACTIVATE DIALOG oDlg NOMODAL SET TIMER oTimer OF oDlg VALUE 2000 ACTION { || oDlg:Close() } RETURN oDlg

vladru: Я Inkey вставил просто для задержки. В реальной программе после вызова DlgWait идет индексация файлов, а надпись "идет индексация" не видна. Функцию DlgWait я взял из примера dbview.prg. В этом примере надпись "indexing" то же не видна при индексации. Интересно что если вместо Inkey(2) вставить SET TAIMER, как Вы указали, то надпись видна, но если такую конструкцию: nSec := Seconds() DO WHILE Seconds() < nSec+2 ENDDO то нет надписи.

alkresin: Эта конструкция с do while не позволяет программе перейти в состояние ожидания, в котором она могла бы обрабатывать сообщения для диалогового окна, поэтому в нем ничего не прорисовывается. То же - для inkey()

vladru: Спасибо за разъяснения. Но как сделать чтобы во время индексации надпись появилась ? (она, как я понимаю, тоже не появляется из-за отсутствия состояния ожидания) Например вот в таком примере (street это база из kladr.zip) : #include "hwgui.ch" Function Main Local oMainWindow INIT WINDOW oMainWindow MAIN TITLE "Example" ; AT 200,0 SIZE 400,150 MENU OF oMainWindow MENUITEM "&Exit" ACTION hwg_EndWindow() MENUITEM "&DoIndex" ACTION DoIndex() ENDMENU ACTIVATE WINDOW oMainWindow Return Nil Static Function DoIndex() LOCAL oDlg USE street.dbf oDlg := DlgWait() INDEX ON code TO street oDlg:Close() RETURN nil Static Function DlgWait() Local oDlg INIT DIALOG oDlg AT 0,0 SIZE 200,70 ; STYLE DS_CENTER + WS_SYSMENU @ 10, 10 SAY "Wait, please ..." SIZE 180,20 ACTIVATE DIALOG oDlg NOMODAL oDlg:Show() Return oDlg

alkresin: А если вы вместо того, чтобы вызывать oDlg:Show() добавите в STYLE диалога WS_VISIBLE, надпись появится ?

vladru: ДА! Если вместо вызова oDlg:Show() добавить в STYLE диалога WS_VISIBLE, то надпись появляется. Спасибо.

nick_mi: Александр! А можно в DBCHW добавить где-нить на экране информацию о том, что запись помечена для удаления в версиях 2.2 и 2.3 индикацию не нашел, может плохо искал ? А может где-то надо сделать установки?

alkresin: Нет такой индикации, надо будет сделать

rovix: Добрый день! Второй подход в попытке освоить Harbour. На этот раз с hwg. Все равно не хватает теории в создании приложений с помощью харбора :( Начинаю, казалось бы, с простого. Создаю форму в дизайнере. Проверяю работу внутри дизайнера - условно работает. Условно, в том смысле, что первую кнопку пока не стал озадачивать действиями. Компилирую - компилируется без ошибок Запускаю - внешний вид окна не такой как в дизайнере Вверху вид в дизайнере, внизу после компиляции. Нажимаю кнопку "Изм текст" - получаю ошибку: "Error BASE/1003 Variable does not exist: OLABEL1 Called from main.prg->OBUTTON3_ONCLICK(31) Called from main.prg->(b)_MAIN(22) Called from source\winapi/hdialog.prg->ONDLGCOMMAND(334) Called from source\winapi/hdialog.prg->(b)(_INITSTATICS00003)(0) Called from source\winapi/hdialog.prg->HDIALOG:ONEVENT(182) Called from ->HWG_DLGBOXINDIRECT(0) Called from source\winapi/hdialog.prg->HDIALOG:ACTIVATE(136) Called from main.prg->_MAIN(25) Called from main.prg->MAIN(5) HWGUI 2.18 Build 1 Date:01/13/14 Time:15:57:55" Текст приложения: #include "hwgui.ch" STATIC Thisform FUNCTION main( p1, p2, p3, p4 ) RETURN _main( p1, p2 ,p3 ,p4) FUNCTION _main LOCAL oButton1, oButton2, oButton3, oLabel1 INIT DIALOG oDlg TITLE "Form1" ; AT 0,-130 SIZE 340,91 NOEXIT ; STYLE WS_POPUP+WS_CAPTION+WS_SYSMENU+WS_SIZEBOX+DS_CENTER Thisform := oDlg @ 12,50 BUTTON oButton1 CAPTION "Окно 1" SIZE 90,30 ; STYLE WS_TABSTOP @ 229,49 BUTTON oButton2 CAPTION "Выход" SIZE 90,30 ; STYLE WS_TABSTOP ; ON CLICK {|| oDlg:CLOSE() } @ 123,50 BUTTON oButton3 CAPTION "Изм текст" SIZE 90,30 ; STYLE WS_TABSTOP ; ON CLICK {|| oButton3_onClick( ) } @ 18,13 SAY oLabel1 CAPTION "Этот текст изменить" SIZE 136,19 ACTIVATE DIALOG oDlg RETURN oDlg:lresult STATIC FUNCTION oButton3_onClick oLabel1:Caption:='Новый текст!!!' oDlg:REFRESH() RETURN Nil А теперь возникшие вопросы: 1.По внешнему виду кнопочек на форме - так и должно быть? 2.Почему в дизайнере работает, а после компиляции нет - что не так в тексте программы. 3.Сейчас приложение в виде диалога и изменить содержимое контрола (в данном случае текст) по кнопке получается, если же оформляю как окно "MAIN", то refresh сделать никак не получается. Я так понимаю, что нужно как-то по другому, но КАК? Спасибо за внимание. Подскажите, что делать. Может у кого-то есть литература по harbour&

rovix: версия hwg 2.18, harbour 3.0. Ставил по сайту http://www.kresin.ru/

rovix: пардон, компилятор mingw тот, что cтавится вместе с harbour 3.0.0 с 64х разрядными библиотеками.

alkresin: rovix пишет: 1.По внешнему виду кнопочек на форме - так и должно быть? Вы, наверное, компилируете приложение при помощи hbmk.bat ? Тогда создайте руками текстовый файл, например, manifest.rc, включите туда строчку: 1 24 "..\image\WindowsXP.Manifest" ( путь к WindowsXP.Manifest у вас может быть другим ) и вставьте этот manifest.rc в hbmk.bat: hbmk2 %1 manifest.rc -i..\include -L..\lib -lhwgui -lprocmisc -lhbxml -lhwgdebug.lib -gui -trace %2 Вид кнопок и др. элементов изменится. Это шаманский прием от Microsoft... Мне надо было включить это дело самому, просто я сам пользуюсь исключительно Borland C 5.5, в батниках для него это все включено. 2.Почему в дизайнере работает, а после компиляции нет - что не так в тексте программы. oLabel1 должен быть объявлен как Private, а не Local, сейчас он просто не виден в другой функции. Я правильно понял, что этот prg сгенерирован автоматически ? 3.Сейчас приложение в виде диалога и изменить содержимое контрола (в данном случае текст) по кнопке получается, если же оформляю как окно "MAIN", то refresh сделать никак не получается. Я так понимаю, что нужно как-то по другому, но КАК? Вместо oLabel1:Caption:='Новый текст!!!' oDlg:REFRESH() надо: oLabel1:SetText( 'Новый текст!!!' )

rovix: alkresin пишет: Я правильно понял, что этот prg сгенерирован автоматически ? Да, автоматически. Трюк с манифестом помог, спасибо.

alkresin: rovix пишет: Да, автоматически. Этот вариант годится, скорее, для учебных целей, я им никогда не пользовался. Модуль для формирования prg выполнен в виде внешнего скрипта ( designer/resource/f_hwgprg.prg ), кто-то из лучших побуждений заменил там тип создаваемых переменных с Private на Local - вот оно так и получилось.

ZAlex: Добрый день. Пытаюсь освоить HwGUI. Можно ли изменить цвет GROUPBOX? Делаю так: @ 3,10 GROUPBOX oGroupId CAPTION "Идентификаторы" SIZE oForm:nWidth - 10, 200 COLOR hwg_VColor("0000FF") Собираю MinGW. По синтаксису видим: #xcommand @ <x>,<y> GROUPBOX [ <oGroup> CAPTION ] <caption> ; [ OF <oWnd> ] ; [ ID <nId> ] ; [ SIZE <width>, <height> ] ; [ COLOR <color> ] ; [ BACKCOLOR <bcolor> ] ; [ FONT <oFont> ] ; [ ON INIT <bInit> ] ; [ ON SIZE <bSize> ] ; [ ON PAINT <bDraw> ] ; [ STYLE <nStyle> ] ; => ; [<oGroup> := ] HGroup():New( <oWnd>,<nId>,<nStyle>,<x>,<y>,<width>, ; <height>,<caption>,<oFont>,<bInit>,<bSize>,<bDraw>,<color>,<bcolor> ); [; hwg_SetCtrlName( <oGroup>,<(oGroup)> )] Должно работать, но.... Пробовал разные стили(хотя не конца понял, когда какие можно использовать) Подскажите, куда копать?

alkresin: ZAlex пишет: Можно ли изменить цвет GROUPBOX? Да, действительно, для Groupbox цвет не меняется. У меня не возникало такой необходимости и я никогда это не проверял. Если очень надо, можете попробовать класс HGroupEx из contrib/ext_controls/hctrlex.prg - он входит в библиотеку hwg_extctrl.lib

ZAlex: alkresin пишет: Да, действительно, для Groupbox цвет не меняется. Это не критично. Особой необходимости нет. Тестирую, поэтому и увидел. Спасибо за наводку.

vladru: У меня в диалогах ни для GET полей, ни при редактировании значений в BROWSE не работает шаблон PICTURE "@K" (Удаляет по умолчанию содержание Get-поля, если первая нажатая клавиша не клавиша управления курсором.) Простейший тест: #include "hwgui.ch" FUNCTION Main() LOCAL oDlg, xVal := "Text" hb_cdpSelect( "RU1251" ) INIT DIALOG oDlg title "Шаблон @K" AT 0, 0 size 200, 40 @ 10, 10 GET xVal SIZE 180, 20 PICTURE "@K" oDlg:Activate() RETURN nil Наверно он в hwgui просто не реализован... Это так ? (Если так, то может кто подскажет как сделать этот функционал подручными так сказать средствами.)

alkresin: vladru пишет: Наверно он в hwgui просто не реализован... Это так ? Так. Я даже не знал о существовании этого шаблона. Надо будет сделать.

vladru: Спасибо. Пока решил задачу добавив обработку шаблона "K" прямо в HEedit:onEvent при msg==WM_CHAR if ::lFirst .AND. ("K" $ ::cPicFunc) ::SetText("") ENDIF

alkresin: Правильно. Думаю, там этому шаблону самое место, перед RETURN GetApplyKey(...

ZAlex: Возвращаясь к вопросу по изменению цвета GROUPBOX -- подключил библиотеку hwg_extctrl.lib Пишу: HGroupEX():New( oForm,,131072,3,252,oForm:nWidth - 6, 330," Расположение терминала ",oFontGroup,,,,8404992,15462640,,) Собираю Borland C 5.5, ошибок нет. После запуска программы и вызова формы выскакивает ошибка: Error HCUSTOMWINDOW/0 Invalid class member Called from source\winapi\hcwindow.prg->HGROUPEX:_BACKSTYLE(228) Called from ext_controls\hctrlex.prg->HGROUPEX:NEW(1168) Called from terminal.prg->TERMEDIT(347) Called from terminal.prg->ONCLICK(252) Called from terminal.prg->(b)MAIN(148) Called from source\winapi\hbrowse.prg->HBROWSE:EDIT(1686) Called from source\winapi\hbrowse.prg->HBROWSE:BUTTONDBL(1611) Called from source\winapi\hbrowse.prg->HBROWSE:ONEVENT(393) Called from ->HWG_ACTIVATEMAINWINDOW(0) Called from source\winapi\hwindow.prg->HMAINWINDOW:ACTIVATE(334) Called from terminal.prg->MAIN(210) HWGUI 2.18 Build 2 Что я где неправильно использую? Спасибо?

shalom276: При сборке HWGUI 2.18 build 2 под Visual Studio 2008 возникли проблемы "cl /TP /W3 /nologo /c /Iinclude /I\harbour\include /Foobj/vc\window.obj source/winapi\window.c window.c source/winapi\window.c(1401) : error C2664: hb_retstrlen: невозможно преобразовать параметр 2 из 'void *' в 'const char *' Для преобразования 'void*' к указателю на тип, не являющемуся 'void', требуется явное приведение " Это можно как то исправить? В С++ я не силен...

alkresin: Попробуйте в той строчке перед hText поставить (const char *) - именно так, в скобках.

shalom276: alkresin пишет: Попробуйте в той строчке перед hText поставить (const char *) - именно так, в скобках. Помогло, hwgui.lib, hwg_qhtm.lib 71 obj скомпилировались... Далее ошибка: NMAKE : fatal error U1073: не хватает сведений для построения "source/common/procmisc\hcedit.prg" Stop.

alkresin: shalom276 пишет: NMAKE : fatal error U1073: не хватает сведений для построения "source/common/procmisc\hcedit.prg" Исправьте в makefile.vc строчку EDITOR_DIR = source/common/procmisc на EDITOR_DIR = source/common/editor

alkresin: Вышла новая версия HwGUI - 2.19 build 1 - см. http://www.kresin.ru/hwgui.html Основные изменения: [*] Реальная поддержка Unicode (utf-8), т.е. теперь, действительно, можно писать приложения, пользуясь utf-8. [*] Добавлены "Binary containers" как кроссплатформенная альтернатива ресурсам ( rc files ) - двоичные контейнеры, где можно хранить любые файлы, нужные для приложения. [*] Добавлен виртуальный принтер ".buffer". Его можно указать, даже если в системе принтер не установлен. При этом создается метафайл, который можно просмотреть как печатную форму, переслать на другой компьютер для просмотра и распечатки. [*] Много улучшений в утилитах ( dbc, debugger, designer, tutorial ). [*] GTK версия: значительно расширена, улучшена совместимость с winapi версией. [*] Улучшена совместимость с версией 2.17. [!] Ну и, как обычно, кое-что исправлено.

SergKis: alkresin Что то не качаются у меня исходники из адресов

alkresin: SergKis пишет: Что то не качаются у меня исходники из адресов У меня качаются нормально. Попробуйте еще.

SergKis: alkresin пишет:У меня качаются нормально. Попробуйте еще. глюк у Chrome, Explorer скачал. Спасибо.

alkresin: Вышла новая версия HwGUI - 2.19 build 2 - см. http://www.kresin.ru/hwgui.html Основные изменения: [*] SETGET метод :Enabled() добавлен для всех control'ов (класс HControl), :isEnabled() удален. [*] Методы:GetValue(), :SetValue() были удалены, вместо них - SETGET метод :Value - для тех control'ов, которые обеспечивают ввод информации - edit, checkbox, etc. [*] Дальнейшее улучшение совместимости с версией 2.17. [!] Кое-какие исправления

yury: Что-то в новой GTK-версии библиотеки у меня при ошибках происходит зацикливание вывода окна errorlog. Соответственно и в текстовый error.log пишется в цикле. Только принудительное снятие задачи помогает.

yury: Нашел ошибку. В файле source/gtk/hedit.prg строка 147. Обращение к методу ::GetText() , который был удален в рев.2355 от 21.01.2015 . Если заменить строку на ::Title := hwg_Edit_GetText( ::handle ), то вывод ошибок работает нормально.

alkresin: Спасибо, исправлю.

alkresin: Выложен новый релиз - HwGUI 2.19 build 3

digikv: У меня есть проблема, когда я хочу сделать lib для hwgui на Linux home/digi/hwgui-code/hwgui$ hbmk2 procmisc.hbp hbmk2: Compiling... ../../../../source/common/editor/hcedit_l.c:65:19: fatal error: cairo.h: No such file or directory #include <cairo.h> ^ compilation terminated. hbmk2[procmisc]: Error: Running C/C++ compiler. 1 gcc -c -O3 -DHWG_USE_POINTER_ITEM -W -Wall -pipe -I'/home/digi/harbour-core/include' -I../../../../include '../../../../source/common/editor/hcedit_l.c' В чем проблема?

yury: ../../../../source/common/editor/hcedit_l.c:65:19: fatal error: cairo.h: No such file or directory #include <cairo.h> cairo.h отсутствует. Надо установить пакет разработки для gtk2 : libgtk2-dev или gtk2-dev, в разных линуксах по разному называется.

digikv: digi@MALIHP:~/hwgui-code/hwgui$ sudo apt-get install libgtk2.0-dev libcairo2-dev libfontconfig1-dev Читам спискове пакета... Урађено Правим дрво међузависности Читам информацију стања... Урађено „libcairo2-dev“ је већ у најновијем издању. „libcairo2-dev“ постављен на ручно инсталиран. „libfontconfig1-dev“ је већ у најновијем издању. „libfontconfig1-dev“ постављен на ручно инсталиран. „libgtk2.0-dev“ је већ у најновијем издању. надограђених — 0, новоинсталираних — 0, за уклањање — 0, и ненадограђених — 7. digi@MALIHP:~/hwgui-code/hwgui$ hbmk2 procmisc.hbphbmk2: Compiling... ../../../../source/common/editor/hcedit_l.c:65:19: fatal error: cairo.h: No such file or directory #include <cairo.h> ^ compilation terminated. hbmk2[procmisc]: Error: Running C/C++ compiler. 1 gcc -c -O3 -DHWG_USE_POINTER_ITEM -W -Wall -pipe -I'/home/digi/harbour-core/include' -I../../../../include '../../../../source/common/editor/hcedit_l.c'

alkresin: digikv пишет: „libcairo2-dev“ је већ у најновијем издању. „libcairo2-dev“ постављен на ручно инсталиран. Т.е., libcairo2-dev не установлен и его надо установить вручную ? Поэтому и ругается, наверное, на отсутствие cairo.h

yury: alkresin пишет: Т.е., libcairo2-dev не установлен и его надо установить вручную ? Поэтому и ругается, наверное, на отсутствие cairo.h Да нет. Пишет установлен. Просто в procmisc.hbp не указан путь к нему. Надо добавить строку : "{unix}-cflag=`pkg-config --cflags cairo`"

alkresin: Да, действительно. Поправлю.

alkresin: Вышла новая версия: HwGUI 2.19 build 5. Разные исправления и улучшения, подробности см. в whatsnew.txt и Changelog.



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