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

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

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

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

SergKis: alkresin пишет IF !Empty(::bColorBlock) .AND. hwg_isPtrEq(::handle,hwg_getFocus) Eval( ::bColorBlock, Self ) ENDIF Раз есть такой кодоблок для смены цвета по условию, надо его использовать при смене содержимого GET, имеющего фокус. Этот блок кода надо выполнять всегда и в фокусе и не в фокусе. Пример: от выражения (см. выше для числа) уст. FontColor, одинаковый и для в фокусе и для не в фокусе, а BackColor для них разный oGet:Value( -100 ); oGet:Refresh() oGet:Value( 100 ); oGet:Refresh() oGet:Value( 1001 ); oGet:Refresh() и еще это труднозапоминаемое hwg_Isptreq( ::handle, hwg_Getfocus() ) может сделать ::lFocused переменную или ACCESS IsFocused INLINE hwg_Isptreq( ::handle, hwg_Getfocus() ) oGet:IsFocused oGet:lFocused как то лучше запоминается

SergKis: Понял, что меня все время смущало в работе с цветом HEdit, переменные ::tColor и ::bColor все время меняют свои значения, т.е. ведут себя как рабочие переменные (::aColorOld), т.е. в классе нет переменных источников для цвета. Предложение:[pre2] DATA nFColor DATA nBColor DATA lFocused INIT .F. METHOD SetColor( tcolor, bColor, lRepaint ) CLASS HEdit If ::nFColor == Nil ::nFColor := tcolor EndIf If ::nBColor == Nil ::nBColor := bColor EndIf If ::nFColor == Nil ::nFColor := 0 EndIf RETURN Super:SetColor( tcolor, bColor, lRepaint ) METHOD SetColorReal() CLASS HEdit LOCAL tC := ::nFColor LOCAL bC := ::nBColor LOCAL xC If ::lFocused .and. lColorinFocus tC := tColorinFocus bC := bColorinFocus EndIf If hb_IsBlock(tC) xC := Eval(tC, Self) If hb_IsNumeric(xC) tC := xC EndIf EndIf If hb_IsBlock(bC) xC := Eval(bC, Self) If hb_IsNumeric(xC) bC := xC EndIf EndIf Super:SetColor( tC, bC, .T. ) RETURN METHOD Refresh() CLASS HEdit LOCAL vari ::SetColorReal() IF hb_isBlock( ::bSetGet ) vari := Eval( ::bSetGet, , self ) IF vari == Nil vari := "" ENDIF IF !Empty( ::cPicFunc ) .OR. !Empty( ::cPicMask ) vari := Transform( vari, ::cPicFunc + iif( Empty(::cPicFunc ),""," " ) + ::cPicMask ) ELSE vari := iif( ::cType == "D", Dtoc( vari ), iif( ::cType == "N",Str(vari ),iif(::cType == "C",vari,"" ) ) ) ENDIF ::title := vari hwg_Setdlgitemtext( ::oParent:handle, ::id, vari ) ELSE hwg_Setdlgitemtext( ::oParent:handle, ::id, ::title ) ENDIF // IF ::bColorBlock != Nil .AND. hwg_Isptreq( ::handle, hwg_Getfocus() ) // Eval( ::bColorBlock, Self ) // ENDIF RETURN Nil и IF msg == WM_SETFOCUS ::lFocused := .T. ::Refresh() ELSEIF msg == WM_KILLFOCUS ::lFocused := .F. ::Refresh() тогда должны совместиться старые тексты с исп. hwg_SetColorinFocus( lColor, ... ) и ::SetColor(...) и добавится возможность ставить ::nFColor := {|o,v| v := o:Value(), iif(v < 0, ..., iif(v >=0 .and. v <= 1000, ... } ::nBColor := {|o| iif(o:lFocused, ..., ...) } [/pre2]

SergKis: PS в Refresh() ::SetColorReal() конечно надо вместо строк с //


alkresin: Добавил массивы кодоблоков в HColumn() и метод SetPaintCB( nId, block, cId ), чтобы их добавлять, менять и удалять. В guilib.ch - предопределенные значения nId: PAINT_LINE_ALL - рисует всю ячейку PAINT_LINE_BACK - рисует только фон и передает управление обратно HwGUI для рисования текста PAINT_LINE_ITEM - вызывается после того, как ячейка отрисована, чтобы нарисовать там дополнительные элементы То же самое для Header и Footer: PAINT_HEAD_ALL PAINT_HEAD_BACK PAINT_HEAD_ITEM PAINT_FOOT_ALL PAINT_FOOT_BACK PAINT_FOOT_ITEM Пример использования помещен в tutor. Секция "Advanced using of controls", модуль "Browse" - там простенький Super Header, смена порядка при щелчке по заголовку - и отображение его в заголовке, нарисованная ячейка.

SergKis: alkresin По документации. Дистрибутив HwGUI представляет собой архивный файл, без какой-либо установочной программы. Это может быть zip - архив, если он предназначен для Windows, или tar.gz, tar.bz2, если для Linux. Вам надо просто распаковать его в любое место, которое вы сочтете подходящим ... Установка C:\BORLAND\BCC55 C:\MiniGUI\Harbour C:\HwGui с добавкой в bat файлы сборки set path=c:\minigui\harbour\bin;c:\borland\bcc55\bin; set hb_path=c:\minigui\harbour\bin не собирают libы, примеры собираются через hbmk2 (примеры) [pre2] c:\HwGui\_hbmk2.bat @echo off cls set path=c:\minigui\harbour\bin;c:\borland\bcc55\bin; set hb_path=c:\minigui\harbour\bin echo ------- hwgui.hbp -------- > _hbmk2.txt %hb_path%\hbmk2.exe -info -comp=bcc -trace hwgui.hbp >> _hbmk2.txt echo ------- hbxml.hbp -------- >> _hbmk2.txt %hb_path%\hbmk2.exe -info -comp=bcc -trace hbxml.hbp >> _hbmk2.txt echo ------- hwgdebug.hbp -------- >> _hbmk2.txt %hb_path%\hbmk2.exe -info -comp=bcc -trace hwgdebug.hbp >> _hbmk2.txt echo ------- procmisc.hbp -------- >> _hbmk2.txt %hb_path%\hbmk2.exe -info -comp=bcc -trace procmisc.hbp >> _hbmk2.txt C:\HwGui\contrib\_hbmk2.bat @echo off cls set path=c:\minigui\harbour\bin;c:\borland\bcc55\bin; set hb_path=c:\minigui\harbour\bin echo ------- hbactivex.hbp -------- > _hbmk2.txt %hb_path%\hbmk2.exe -info -comp=bcc -trace hbactivex.hbp >> _hbmk2.txt echo ------- hwg_extctrl.hbp -------- >> _hbmk2.txt %hb_path%\hbmk2.exe -info -comp=bcc -trace hwg_extctrl.hbp >> _hbmk2.txt echo ------- hwg_qhtm.hbp -------- >> _hbmk2.txt %hb_path%\hbmk2.exe -info -comp=bcc -trace hwg_qhtm.hbp >> _hbmk2.txt C:\HwGui\samples\_hbmk2.bat @echo off cls if %1.==. goto e set path=c:\minigui\harbour\bin;c:\borland\bcc55\bin; set hb_path=c:\minigui\harbour\bin if not exist hwgui_xp.rc echo 1 24 "..\image\WindowsXP.Manifest" > hwgui_xp.rc echo -------------- %1 -------------------- > _hbmk2.txt %hb_path%\hbmk2.exe -info -comp=bcc -trace ..\hwgui.hbc hwgui_xp.rc %1 >> _hbmk2.txt :e C:\HwGui\tutorial\_hbmk2.bat @echo off SET P=tutor.prg set path=c:\minigui\harbour\bin;c:\borland\bcc55\bin; set hb_path=c:\minigui\harbour\bin if not exist hwgui_xp.rc echo 1 24 "..\image\WindowsXP.Manifest" > hwgui_xp.rc echo ------- %P% -------- > _hbmk2.txt %hb_path%\hbmk2.exe -info -comp=bcc -trace ..\..\hwgui.hbc hwgui_xp.rc %P% >> _hbmk2.txt [/pre2]

SergKis: alkresin пишет Пример использования помещен в tutor. Бросается в глаза сразу: 1. Стиль прорисовки "Some data" отличается от "Age", "Salary" (даже по цвету) 2. "Name" не центровано по вертикали в своей колонке по умолчанию 3. Наведение мыши справа за текстом "Salary" (далеко еще до вертикальной разд.линии) превращает курсор мыши в вид, предназначенный для изменения ширины колонки. 4. Клик по "Salary" работает как клик по "Age", а не должен был бы так себя вести (как то надо различать эти клики) 5. Как заменить, предлагаемую индикацию уст. ордера, на свою bmp ?

SergKis: SergKis пишет 4. Клик по "Salary" работает как клик по "Age" надо так 4. Клик по "Some data" работает как клик по "Age"

Петр: SergKis пишет: set hb_path=c:\minigui\harbour\bin Так в документации (англ.) ж вроде просто SET HB_PATH=c:\harbour или SET HB_PATH=c:\minigui\harbour У меня собралось. вот в стандартные батники setlocal / endlocal добавить было бы не плохо (в помощь ленивому ).

alkresin: Петр пишет: SET HB_PATH=c:\harbour Точно. И в русской тоже. вот в стандартные батники setlocal / endlocal добавить было бы не плохо А что это ?

alkresin: SergKis пишет: 1. Стиль прорисовки "Some data" отличается от "Age", "Salary" (даже по цвету) Потому что именно так и было задумано - в кодоблоке bBack. 2. "Name" не центровано по вертикали в своей колонке по умолчанию В HBrowse по умолчанию выравнивание влево. 3. Наведение мыши справа за текстом "Salary".. А.. ну да, это потому что колонка последняя, надо будет поправить. 4. Клик по "Some data" работает как клик по "Age" Значит, кликнули на header над "Age". 5. Как заменить, предлагаемую индикацию уст. ордера, на свою bmp ? В bDrawOrd использовать hwg_drawbitmap() или hwg_Drawtransparentbitmap() вместо hwg_DrawLine().

Петр: alkresin пишет: А что это ? описание команды SETLOCAL

alkresin: Петр пишет: описание команды SETLOCAL Спасибо. Не знал. Но пока не очень представляю, как это можно использовать.

SergKis: Петр пишет Так в документации (англ.) ж вроде просто SET HB_PATH=c:\harbour или SET HB_PATH=c:\minigui\harbour У меня собралось. Не собирается у меня. samples\bld.bat [pre2] @echo off set path=c:\minigui\harbour\bin;c:\borland\bcc55\bin; set hb_path=c:\minigui\harbour set HRB_DIR=%HB_PATH% set HWGUI_INSTALL=.. ... запуск bld.bat Browse_1 > _.txt _0.txt Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland browse_1.c: Error E2209 c:\minigui\harbour\include\hbdefs.h 50: Unable to open include file 'stdarg.h' Error E2209 c:\minigui\harbour\include\hbdefs.h 51: Unable to open include file 'stdio.h' Error E2209 c:\minigui\harbour\include\hbdefs.h 52: Unable to open include file 'stdlib.h' Error E2209 c:\minigui\harbour\include\hbdefs.h 53: Unable to open include file 'string.h' Error E2209 c:\minigui\harbour\include\hbdefs.h 54: Unable to open include file 'limits.h' Error E2293 c:\minigui\harbour\include\hbdefs.h 517: ) expected Error E2188 c:\minigui\harbour\include\hbdefs.h 523: Expression syntax Error E2257 c:\minigui\harbour\include\hbdefs.h 555: , expected Error E2188 c:\minigui\harbour\include\hbdefs.h 583: Expression syntax Error E2257 c:\minigui\harbour\include\hbdefs.h 617: , expected Error E2451 browse_1.c 49: Undefined symbol 'NULL' Error E2141 browse_1.c 49: Declaration syntax error Error E2190 browse_1.c 49: Unexpected } Error E2190 browse_1.c 49: Unexpected } Error E2040 browse_1.c 49: Declaration terminated incorrectly Error E2190 browse_1.c 100: Unexpected } Error E2190 browse_1.c 100: Unexpected } Error E2109 browse_1.c 100: Not an allowed type in function hb_vm_SymbolInit_BROWSE_1 *** 18 errors in Compile *** Borland Resource Compiler Version 5.40 Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved. Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Fatal: Unable to open file 'C0W32.OBJ' [/pre2]

alkresin: SergKis пишет: Error E2209 c:\minigui\harbour\include\hbdefs.h 50: Unable to open include file 'stdarg.h' Т.е., Харборовские *.h он находит, а *.h от Borland C не может найти. Такое впечатление, что у вас c:\borland\bcc55\bin\bcc32.cfg не настроен. там должно быть: -I"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib" Странно. Вы этот компилятор не использовали с minigui ?

Петр: alkresin пишет: Но пока не очень представляю, как это можно использовать. Да нет это я так по привычке, зачем все усложнять SergKis пишет: Не собирается у меня. samples\bld.bat И у меня Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland hello.c: Borland Resource Compiler Version 5.40 Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved. Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Fatal: Unable to open file 'HWG_QHTM.LIB' Ну это понятно, м.б. лучше по аналогии с hbactivex.lib написать if exist %HWGUI_INSTALL%\lib\hwg_qhtm.lib echo %HWGUI_INSTALL%\lib\hwg_qhtm.lib + >> b32.bc

SergKis: alkresin пишет: Странно. Вы этот компилятор не использовали с minigui ? Минигуи как раз им и пользую (примеры только). Там все хорошо. c:\borland\bcc55\bin\bcc32.cfg Его совсем нет. Обычно направление на include, lib, obj в bat задаются, но я по шагам инструкции шел.

SergKis: alkresin пишет: Т.е., Харборовские *.h он находит, а *.h от Borland C не может найти Это все понятно, понятно, что надо добавлять в bat set bc_path=..., но там и vc, mingw. Может отказаться уже от bat и перейти на hbmk2 ? Вроде работает.

Петр: SergKis пишет: но я по шагам инструкции шел. Но ведь это не инструкция по установке борландовского компилятора, да? Предполагается, что компилятор уже установлен. А вот другая инструкция How-To: Install and Configure Borland® Free Command Line Tools

SergKis: Петр пишет А вот другая инструкция Совершенно верно, но устанавливать, пытаться что то сделать, могут люди разной квалификации. Многим она не нужна, сразу в тексты лезут и быстро врубаются, а кто то пробует, споткнулся, вроде мелочь, а в результате - грустно и время потеряно. Ясно же, надо или batы доводить (надеюсь посылать на инструкцию по написанию их тут не будем) или перходить на hbmk2, т.е. ткнули - получили положительный результат и полжительные эмоции.

Andrey: SergKis пишет: т.е. ткнули - получили положительный результат и положительные эмоции. Люблю очень положительные эмоции !!!



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