Форум » Документация » Документация по HwGUI » Ответить

Документация по HwGUI

alkresin: Наконец-то созрел для того, чтобы обновить документацию по HwGUI и решил начать с русской версии, которой до сих пор не было. Вот первая часть: http://www.kresin.ru/hwgdoc.html. Обращаю ваше внимание, что там, как и на многих других страницах сайта есть message board - можно писать комментарии, ругать за недостатки, сообщать о том, чего недостает, и т.п.

Ответов - 94, стр: 1 2 3 4 5 All

SergKis: alkresin пишет: 3.5. Обзор виджетов. ... Далее идут несколько виджетов, о которых мне почти нечего сказать. ... . Pager, Rebar, Animation - не очень представляю, где и зачем я мог бы их использовать... Пример для Rebar http://my-files.ru/ubrt5z В меню "Dialog" смотреть

alkresin: SergKis пишет: Ясно же, надо или batы доводить (надеюсь посылать на инструкцию по написанию их тут не будем) или перходить на hbmk2, т.е. ткнули - получили положительный результат и полжительные эмоции. Да кто ж мешает вам Hbmk использовать ? В новой локументации про это написано: 2.4. Сборка приложений с HwGUI В bat файлах все нормально, надо только с hwg_qhtm.lib поправить - правильно Петр написал. Просто bcc32.cfg и TLink32.cfg действительно должны присутствовать, это делается всегда при установке/настройке Borland C. Я предпочитаю использовать bat, потому что с ним вижу все, что делаю: что запускается, какие библиотеки используются, какие опции компилятора/линкера, ...

ММК: alkresin пишет: Просто bcc32.cfg и TLink32.cfg действительно должны или iLink32.cfg :)


alkresin: SergKis пишет: Этот блок кода надо выполнять всегда и в фокусе и не в фокусе. Пример: от выражения (см. выше для числа) уст. FontColor, одинаковый и для в фокусе и для не в фокусе, а BackColor для них разный Не надо примешивать сюда изменение цветов в зависимости от содержимого, это другая песня: все, о чем здесь шла речь - это ColorInFocus, цвет GET'a, находящегося в фокусе. и еще это труднозапоминаемое hwg_Isptreq hwg_IsPtrEq() - Is Pointer Equal - так легче запомнить. Можно было бы использовать просто ( :;handle == hwg_GetFocus() ), но, насколько я помню, в xHarbour нельзя сравнивать POINTER'ы, так что эта функция здесь для совместимости. Что насчет добавления нового метода или переменной в класс, я делаю это с большой осторожностью и неохотой, только когда это действительно очень полезно - иначе через какое-то время класс превратится в монстра.

alkresin: SergKis пишет: Понял, что меня все время смущало в работе с цветом HEdit, переменные ::tColor и ::bColor все время меняют свои значения, т.е. ведут себя как рабочие переменные (::aColorOld), т.е. в классе нет переменных источников для цвета. :tColor и :bColor определяют актуальные значения цвета виджета, точно так же, как, например, :nWidth и :nHeight - актуальные значения его размера, и :SetColor() меняет эти актуальные значения, так же, как и :Move() меняет актуальные значения размера. Если просто принять эту логику, то ничего не должно смущать. Реализовать все это можно множеством разных способов, но нужны действительно серьезные основания, чтобы менять существующую реализацию.

SergKis: alkresin пишет: Реализовать все это можно множеством разных способов, но нужны действительно серьезные основания, чтобы менять существующую реализацию Я уже говорил, что принимать\менять - это вашо право, я излагаю (понятным мне языком чего я не понимаю в hwg) все, о чем здесь шла речь - это ColorInFocus, цвет GET'a, находящегося в фокусе. Возможно я беру шире, но пока не понимаю, как в GET (в фокусе\нет) реализовать чтобы циферки < 0 были красненькими, > 0 и <= 1000 синенькими и т.д., а фон для фокуса желтенький, не фокуса беленький. hwg_IsPtrEq() - Is Pointer Equal - так легче запомнить Я не понимаю, чем запись (это ж по всей проге такие конструкции писать) {|o| iif(hwg_Isptreq( o:handle, hwg_Getfocus() ), ..., ... ) } лучше к примеру {|o| iif(o:lFocused, ..., ...) }

alkresin: SergKis пишет: Возможно я беру шире, но пока не понимаю, как в GET (в фокусе\нет) реализовать чтобы циферки < 0 были красненькими, > 0 и <= 1000 синенькими и т.д., а фон для фокуса желтенький, не фокуса беленький. Примерно так: [pre]INIT DIALOG oDlg ... oDlg:bColorinFocus := желтенький ... @ ... GET ... VALID {|nVal,o|SetGetColor(nVal,o)} ... Function SetGetColor( nVal, oGet ) Local tColor := Iif(nVal... ) oGet:SetColor( tColor,, .T. ) oGet:Refresh() // чтобы можно было использовать SetGetColor() вместо oGet:Refresh() RETURN .T. [/pre] Я не понимаю, чем запись (это ж по всей проге такие конструкции писать) {|o| iif(hwg_Isptreq( o:handle, hwg_Getfocus() ), ..., ... ) } лучше к примеру {|o| iif(o:lFocused, ..., ...) } Не лучше. Но если для каждого возможного улучшения создавать новые переменные и методы класса, ... - я об этом уже писал. К тому же, если вы не пишете для xHarbour, можете использовать iif( o:handle == hwg_Getfocus(), ... ). Ну и в крайнем случае, если реально очень надо, можно ведь сделать субкласс от Hedit() и добавить туда нужный вам метод, ООП для того и существует. И, конечно, насчет всей проги вы загнули )

SergKis: alkresin пишет: надо, можно ведь сделать субкласс от Hedit() и добавить туда нужный вам метод, ООП для того и существует. Этим всю весну и часть лета мы с товарищем и занимались, при этом сыпятся все ch команды (получается своя версия, с которой трудно слезть при изм. версий hwg). В основном мой товарищ, двигал (MDI, HBrowseEx свой, а до HEdit даже не дошли) по семейным обстоятельствам, меня хватило в основном на примеры. Сечас нас съела, текучка и срочные изменения законодательсва. В итоге решили, что переводим на 3.2 свою старую (уникодную версию Минигуи) и остаемся на ней, а hwg второй раз (при всех плюсах) откладывается в ящик. К нашему сожалению

alkresin: SergKis пишет: Этим всю весну и часть лета мы с товарищем и занимались, при этом сыпятся все ch команды (получается своя версия, с которой трудно слезть при изм. версий hwg). Это вы долго что-то. Команды, конечно, добавляют неудобства в использование собственных субклассов, но изменяются они очень редко и проблем с этим быть не должно, тем более, что вам ведь не надо заменять весь guilib.ch. Достаточно просто создать свой заголовочный файл mycommands.ch с парой измененных команд (HEdit():New(... -> HEditEx():New(... ) и вставить #include "mycommands.ch" ПОСЛЕ #include "hwgui.ch" - тогда даже переименовывать команду не надо, возьмется ваша.

SergKis: alkresin пишет: Примерно так: Т.е. во WHEN ставим цвет для значения, поступающего в get, учитывая возврат .T.\.F., в VALID ставим цвет для значения, завершающего get, определяем фокус If hwg_Isptreq( oGet:handle, hwg_Getfocus() ) Else EndIf Если есть реальный алгоритм для значения по VALID его встраиваем, разделяя на ошибку\нет, встраиваем действия after Get (с учетом ошибки\нет) ... а Get не один, ... вернулись к "танцу с бубном" по кругу

alkresin: Что-то вы усложняете. Про WHEN вообще речи нет, а в VALID - да, надо вставить в кодоблок ваш алгоритм изменения цвета текста в зависимости от введенного значения. Куда-то же его все-равно придется вставить...

SergKis: alkresin пишет: Это вы долго что-то. 1. Время на это есть только вечером и частично в выходные. 2. Mdi практически с 0 в реальной структуре mdi 3. Меню тоже надо было под себя 4. За рыбу взят HBrowseEx, но все практически с 0, на отладке остановились 5. Старались не трогать базовые классы 6. ch команды надо делать по минигуи (тексты переносить надо) вот и набралось, что не подняли. Пример mdi и только menu http://my-files.ru/23znwg

alkresin: В русскую документацию добавлен раздел про классы HwGUI: http://www.kresin.ru/hwgdoc_classes.html. Пока почти без пояснений и комментариев - будут добавляться по мере возможности, зато список классов, их переменных и методов полный и актуальный.

alkresin: Добавлен раздел про функции HwGUI: http://www.kresin.ru/hwgdoc_functions.html. Комментариев на русском пока нет, зато список - полный.



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