Форум » 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

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 Что я где неправильно использую? Спасибо?



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