Автор | Сообщение |
|
| moderator
|
Пост N: 976
Зарегистрирован: 06.07.06
|
|
Отправлено: 25.08.16 16:39. Заголовок: Документация по HwGUI
Наконец-то созрел для того, чтобы обновить документацию по HwGUI и решил начать с русской версии, которой до сих пор не было. Вот первая часть: http://www.kresin.ru/hwgdoc.html. Обращаю ваше внимание, что там, как и на многих других страницах сайта есть message board - можно писать комментарии, ругать за недостатки, сообщать о том, чего недостает, и т.п.
|
|
|
Ответов - 94
, стр:
1
2
3
4
5
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 1211
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.09.16 23:21. Заголовок: alkresin пишет IF !E..
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 как то лучше запоминается
|
|
|
|
| постоянный участник
|
Пост N: 1212
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.09.16 07:28. Заголовок: Понял, что меня все ..
Понял, что меня все время смущало в работе с цветом HEdit, переменные ::tColor и ::bColor все время меняют свои значения, т.е. ведут себя как рабочие переменные (::aColorOld), т.е. в классе нет переменных источников для цвета. Предложение: Скрытый текст
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, ..., ...) }
|
|
|
|
|
| постоянный участник
|
Пост N: 1213
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.09.16 07:41. Заголовок: PS в Refresh() ::Set..
PS в Refresh() ::SetColorReal() конечно надо вместо строк с //
|
|
|
|
| moderator
|
Пост N: 1005
Зарегистрирован: 06.07.06
|
|
Отправлено: 05.09.16 09:41. Заголовок: Добавил массивы кодо..
Добавил массивы кодоблоков в 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, смена порядка при щелчке по заголовку - и отображение его в заголовке, нарисованная ячейка.
|
|
|
|
| постоянный участник
|
Пост N: 1214
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.09.16 11:55. Заголовок: alkresin По документ..
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 (примеры) Скрытый текст
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
|
|
|
|
|
| постоянный участник
|
Пост N: 1215
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.09.16 12:12. Заголовок: alkresin пишет Приме..
alkresin пишет цитата: | Пример использования помещен в tutor. |
| Бросается в глаза сразу: 1. Стиль прорисовки "Some data" отличается от "Age", "Salary" (даже по цвету) 2. "Name" не центровано по вертикали в своей колонке по умолчанию 3. Наведение мыши справа за текстом "Salary" (далеко еще до вертикальной разд.линии) превращает курсор мыши в вид, предназначенный для изменения ширины колонки. 4. Клик по "Salary" работает как клик по "Age", а не должен был бы так себя вести (как то надо различать эти клики) 5. Как заменить, предлагаемую индикацию уст. ордера, на свою bmp ?
|
|
|
|
| постоянный участник
|
Пост N: 1216
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.09.16 12:19. Заголовок: SergKis пишет 4. Кли..
SergKis пишет цитата: | 4. Клик по "Salary" работает как клик по "Age" |
| надо так 4. Клик по "Some data" работает как клик по "Age"
|
|
|
|
| постоянный участник
|
Пост N: 1285
Зарегистрирован: 09.10.06
|
|
Отправлено: 05.09.16 14:09. Заголовок: SergKis пишет: set ..
SergKis пишет: цитата: | set hb_path=c:\minigui\harbour\bin |
| Так в документации (англ.) ж вроде просто SET HB_PATH=c:\harbour или SET HB_PATH=c:\minigui\harbour У меня собралось. вот в стандартные батники setlocal / endlocal добавить было бы не плохо (в помощь ленивому ).
|
|
|
|
| moderator
|
Пост N: 1006
Зарегистрирован: 06.07.06
|
|
Отправлено: 05.09.16 14:46. Заголовок: Петр пишет: SET HB_..
Петр пишет: Точно. И в русской тоже. цитата: | вот в стандартные батники setlocal / endlocal добавить было бы не плохо |
| А что это ?
|
|
|
|
| moderator
|
Пост N: 1007
Зарегистрирован: 06.07.06
|
|
Отправлено: 05.09.16 14:54. Заголовок: SergKis пишет: 1. С..
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().
|
|
|
|
| постоянный участник
|
Пост N: 1286
Зарегистрирован: 09.10.06
|
|
Отправлено: 05.09.16 15:42. Заголовок: alkresin пишет: А ч..
|
|
|
|
|
| moderator
|
Пост N: 1008
Зарегистрирован: 06.07.06
|
|
Отправлено: 05.09.16 16:44. Заголовок: Петр пишет: описан..
Петр пишет: цитата: | описание команды SETLOCAL |
| Спасибо. Не знал. Но пока не очень представляю, как это можно использовать.
|
|
|
|
| постоянный участник
|
Пост N: 1217
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.09.16 17:39. Заголовок: Петр пишет Так в док..
Петр пишет цитата: | Так в документации (англ.) ж вроде просто SET HB_PATH=c:\harbour или SET HB_PATH=c:\minigui\harbour У меня собралось. |
| Не собирается у меня. samples\bld.bat @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'
|
|
|
|
| moderator
|
Пост N: 1009
Зарегистрирован: 06.07.06
|
|
Отправлено: 05.09.16 19:38. Заголовок: SergKis пишет: Erro..
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 ?
|
|
|
|
| постоянный участник
|
Пост N: 1287
Зарегистрирован: 09.10.06
|
|
Отправлено: 05.09.16 19:58. Заголовок: alkresin пишет: Но ..
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
|
|
|
|
| постоянный участник
|
Пост N: 1218
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.09.16 20:25. Заголовок: alkresin пишет: Стра..
alkresin пишет: цитата: | Странно. Вы этот компилятор не использовали с minigui ? |
| Минигуи как раз им и пользую (примеры только). Там все хорошо. цитата: | c:\borland\bcc55\bin\bcc32.cfg |
| Его совсем нет. Обычно направление на include, lib, obj в bat задаются, но я по шагам инструкции шел.
|
|
|
|
| постоянный участник
|
Пост N: 1219
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.09.16 20:45. Заголовок: alkresin пишет: Т.е...
alkresin пишет: цитата: | Т.е., Харборовские *.h он находит, а *.h от Borland C не может найти |
| Это все понятно, понятно, что надо добавлять в bat set bc_path=..., но там и vc, mingw. Может отказаться уже от bat и перейти на hbmk2 ? Вроде работает.
|
|
|
|
| постоянный участник
|
Пост N: 1288
Зарегистрирован: 09.10.06
|
|
Отправлено: 05.09.16 20:56. Заголовок: SergKis пишет: но я..
|
|
|
|
| постоянный участник
|
Пост N: 1220
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.09.16 00:50. Заголовок: Петр пишет А вот дру..
Петр пишет Совершенно верно, но устанавливать, пытаться что то сделать, могут люди разной квалификации. Многим она не нужна, сразу в тексты лезут и быстро врубаются, а кто то пробует, споткнулся, вроде мелочь, а в результате - грустно и время потеряно. Ясно же, надо или batы доводить (надеюсь посылать на инструкцию по написанию их тут не будем) или перходить на hbmk2, т.е. ткнули - получили положительный результат и полжительные эмоции.
|
|
|
|
| постоянный участник
|
Пост N: 5085
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.09.16 03:03. Заголовок: SergKis пишет: т.е...
SergKis пишет: цитата: | т.е. ткнули - получили положительный результат и положительные эмоции. |
| Люблю очень положительные эмоции !!!
|
|
|
Ответов - 94
, стр:
1
2
3
4
5
All
[только новые]
|
|