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

HwGui 2.21

alkresin: Приветствую всех! Выпустил сегодня очередной релиз: HwGui 2.21 build 1. Как обычно, zip с исходниками - на Sourceforge, бинарники для Bcc 5.1 и Mingw 4.8.2 - у меня на http://www.kresin.ru/hwgui.html

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

alkresin: Я постараюсь. Если ProgressBar достаточно прост, там всего-ничего, то Browse...

AndreyZh: Сильно не отвлекайтесь на меня... "смотрю" во время "отдыха". Часто использую функции *Token(), которые в "других" библиотеках, соответственно стандартный сборщик не видит библ. Добавил в bld.bat if exist %HRB_DIR%\lib\ct.lib echo %HRB_DIR%\lib\ct.lib + >> b32.bc if exist %HRB_DIR%\lib\xhb.lib echo %HRB_DIR%\lib\xhb.lib + >> b32.bc т.е. для xHarbour & Harbour соответсвенно

nick_mi: Александр добрый день! Выскочила ошибка в DBCHW. Ошибкам проявляется в том случае, если кликнуть мышкой правее последнего поля таблицы. Такой ошибки не было в версии 2.18 build 2. Error BASE/1132 Bound error: array access Called from source\winapi\hbrowse.prg->HBROWSE:BUTTONDOWN(1517) Called from source\winapi\hbrowse.prg->HBROWSE:ONEVENT(393) Called from ->HWG_ACTIVATEMDIWINDOW(0) Called from source\winapi\hwindow.prg->HMAINWINDOW:ACTIVATE(361) Called from dbchw.prg->MAIN(296) HWGUI 2.21 Build 6 Date:21/11/18 Time:15:56:18 И еще одно замечание. В версии 2.18 build 2. все открытые индексы были в списке открытых индексов, и можно было выбрать любой индекс. Сейчас остается только один последний индекс. Это теперь так всегда будет?


alkresin: nick_mi пишет: Error BASE/1132 Bound error: array access Called from source\winapi\hbrowse.prg->HBROWSE:BUTTONDOWN(1517) Исправил, залил на SVN. В версии 2.18 build 2. все открытые индексы были в списке открытых индексов, и можно было выбрать любой индекс. Сейчас остается только один последний индекс. Это если индексы в нескольких файлах и вы их открываете по одному (Open index)? Да, там стоял просто set index to, я сейчас добавил additive. Но это уже очень давно не менялось.

AndreyZh: Продолжу? Детские вопросы. Теперь по кнопкам 1. @ 10, 636 BUTTON "Очистка списка АкцМ" SIZE 200, 32 BACKCOLOR hwg_ColorC2N(cgBackCol) COLOR hwg_ColorC2N(cgColor) Не меняет ни цвета текста, ни фона - обычный черный на сером 2. Здесь две проблемы сразу: @ 10, 636 OWNERBUTTON ob1 OF oMainWind ID 108 TEXT "Очистка списка АкцМ" SIZE 200, 32 BACKCOLOR hwg_ColorC2N(cgBackCol) Это меняет фон, но текст остаётся черным Сделал эксперимент с двумя вариантами @ 10, 636 OWNERBUTTON ob1 OF oMainWind ID 108 TEXT "Очистка списка АкцМ" SIZE 200, 32 BACKCOLOR hwg_ColorC2N(cgBackCol) COLOR {||.T.} @ 220,636 OWNERBUTTON ob2 OF oMainWind ID 109 TEXT "Определить алкокоды" SIZE 200, 32 BACKCOLOR hwg_ColorC2N(cgBackCol) COLOR hwg_ColorC2N(cgColor) Выдаёт ошибки компиляции Compiling 'OprId.prg'... OprId.prg(56) Error E0030 Syntax error: "syntax error at '{'" OprId.prg(57) Error E0022 Invalid lvalue: '()'

AndreyZh: Позвольте так же замечания по инструкции? Просто смотреть примеры не могу, а посему пытаюсь сделать что-то полезное... 1. Смотря какой-то пример увидел функцию hwg_Selectfile("Файл из БД УСЕга", "*.*") Захотел посмотреть, как использовать - её вообще нет в описании, начал изучать методом тыка… Оказывается она сменяет текущий каталог. 2. Решил вставить в форму EDITBOX - нужное работает. Увидел, что создаётся объект. Как его использовать - смотрю описание класса: METHODS New( oWndParent, nId, vari, bSetGet, nStyle, nLeft, nTop, nWidth, nHeight, ; oFont, bInit, bSize, bGfocus, bLfocus, ctooltip, ; tcolor, bcolor, cPicture, lNoBorder, nMaxLength, lPassword, bKeyDown, bChange ) Activate() onEvent( msg, wParam, lParam ) Init() Refresh() Value( xValue ) SETGET SelStart( nStart ) SETGET SelLength( nLength ) SETGET ParsePict( cPicture, vari ) Начитаю тыкаться: записать в поле, взять в поле... не получается смотрю кучу примеров, где есть editbox, в каком-то нахожу oEdit:SetText("") - значит типа вставляет текст, получилось. Как взять - с потолка пишу с:=oEdit:GetText() - получается... НО ЭТИ МЕТОДЫ ВООБЩЕ НЕ УПОМИНАЮТСЯ у класса!

AndreyZh: Ещё ошибочка... Мне нужно в одной области ввести несколько строк. Насколько понял GET и EDITBOX это не позволяют? Нашел HCEDIT. При сборке xHarbour вылетает по ошибке компиляции Error: Unresolved external '_HB_FUN_HB_AT' referenced from C:\XHARBOUR\LIB\PROCMISC.LIB|hcedit Error: Unresolved external '_HB_FUN_HB_RAT' referenced from C:\XHARBOUR\LIB\PROCMISC.LIB|hcedit В xHarbour Нет HB_At() и HB_Rat(), но есть At(), Rat() Вставив заплатку в программу: FUNC HB_At(c,b); RETU At(c,b) FUNC HB_RAt(c,b); RETU Rat(c,b) Всё собралось и работает, как ожидалось...

alkresin: AndreyZh пишет: @ 10, 636 BUTTON ... BACKCOLOR hwg_ColorC2N(cgBackCol) ... В стандартной кнопке цвета не меняются, она целиком отрисовывается системой. @ 220,636 OWNERBUTTON ...TEXT "Определить алкокоды" SIZE 200, 32 BACKCOLOR hwg_ColorC2N(cgBackCol) COLOR hwg_ColorC2N(cgColor) COLOR здесь должен находиться рядом с TEXT, так определена команда: @ 220,636 OWNERBUTTON ...TEXT "Определить алкокоды" COLOR hwg_ColorC2N(cgColor) ... С OWNERBUTTON рекомендую использовать стили (HStyle) - см. примеры в HwGui Tutor. А чтобы стандартные контролы выглядели прилично, не забывайте прилинковывыть WindowsXP.Manifest, как в samples/bld.bat.

alkresin: AndreyZh пишет: hwg_Selectfile("Файл из БД УСЕга", "*.*") Захотел посмотреть, как использовать - её вообще нет в описании ?? http://www.kresin.ru/hwgdoc_functions.html#Functions1 - там в самом начале. Функции, кстати, есть в документации все. Не все с комментариями, но, по крайней мере, с параметрами и с отметкой, если только для Windows. с:=oEdit:GetText() - получается... НО ЭТИ МЕТОДЫ ВООБЩЕ НЕ УПОМИНАЮТСЯ у класса! Они унаследованы от родительского класса HControl. Кстати, лучше использовать Value(): string := oEdit:Value oEdit:Value := string

alkresin: AndreyZh пишет: Мне нужно в одной области ввести несколько строк. @ ... EDITBOX ... STYLE ES_MULTILINE - стандартный edit контрол. А HCEdit - более навороченный. А hb_at(), hb_rat(), действительно, надо будет переопределить через #ifdef __XARBOUR__

AndreyZh: Спасибо Александр за ответы! Буду разбираться дальше...

AndreyZh: Добрый день Александр! Появилось время посмотреть и сразу кучка непоняток [img]https://storage.olegon.ru/supermag/ЕГАИС%20и%20УТМ/errhwgui1.jpg[/img] #include "windows.ch" #include "guilib.ch" #define CRLF (CHR(13)+CHR(10)) #define TRUE .T. #define FALSE .F. // Мои любимые команды #xcommand FOR <i>:=<s> TO <n> DO <*statement*> =>; FOR <i>:=<s> TO <n> ; <statement> ; END #xcommand IF <cond> THEN <*statement*> =>; IF <cond> ; <statement>; ENDIF #xcommand DEFAULT <p> TO <v> [, <p2> TO <v2> ] => ; <p> := IF(<p> == NIL, <v>, <p>) ; [; <p2> := IF (<p2> == NIL, <v2>, <p2>) ] // Список настраиваемых цветов программы STAT cgBackCol := "000033" // Фон для контролов STAT cgColor := "ffff99" // Шрифт для контролов STAT cgCodePage := "RU866" // Кодовая страница внешних Dbf файлов // Глобальные для программы переменные, вызываемые из разных процедур STAT oBitmap // Картинка QR кода отражаемая на экране STAT oBtmp // Объект BITMAP *STAT oEdit // Объект преобразуемого кода * -------------------------------------------------------------------------------------------------- * Освоение окон и меню PROC Main() LOCA nWidthScr := hwg_GetDesktopWidth() // Ширина экрана в пикселах. LOCA nHeightScr := hwg_GetDesktopHeight() // Высота экрана в пикселах. LOCA nwW:=0, nwH:=0, nbW:=0, nbH:=0, nControl:=0, nTop:=0 LOCA oFont, oArial, oeW, oeH LOCA oIcon:= HIcon():AddFile("Bob.ico") PRIV oEdit // Даю стартовую картинку. При вводе знаков генерации QR кода она будет перерисовываться oBitmap := HBitmap():AddFile("Zhdun.bmp") PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13 PREPARE FONT oArial NAME "Arial Cyr" WEIGHT 700 HEIGHT -12 // Инициализация главного окна - размер в половину экрана // Размеры главного окна - позиционирование других контролов nwW := Int(nWidthScr/2) // Ширина окна nwH := Int(nHeightScr/2) // Высота окна INIT WINDOW oMainWind MAIN; TITLE " Ввод, отражение в главном окне и печать QR кода"; ICON oIcon FONT oFont; AT 1,1 SIZE nwW,nwH BACKCOLOR hwg_ColorC2N("cccccc") oMainWind:Center() // Центрирую окно // Расчет размера картинки в четверть исходного окна nbW := Int(nwW/4) nbH := Int(nwH/4) // Рисую картинку по центру в половину окна - команда растягивает на всю указанную область - это лучше, чем фон окна @ Int(nWidthScr/5.6),Int(nHeightScr/7) BITMAP oBitmap ID 1001 SIZE nbW, nbH ON CLICK {||pDemo()} ********************* * Правильно ли понимаю, что ряд команд не "возвращает" объект и его приходится определять через опу // Определяю глобальный объект контрола из потокового автоматического добавления в массив контролов nControl := Len(oMainWind:aControls) oBtmp := oMainWind:aControls[nControl] ******************** * Криво отражается обрамление на W10 что видно на скрине oBtmp:nBorder := 10 //*** Добавляю контролы для ввода информации и кнопки, вызывающие действия над картинкой QR кода // Координаты верхней линии объектов nTop := nwH - 70 // Область ввода преобразуемых знаков @ 10,nTop-26 SAY "Внесите знаки: " FONT oArial SIZE 200, 26 BACKCOLOR hwg_ColorC2N("cccccc") * @ 106,nTop-30 EDITBOX oEdit SIZE 390, 56 ON LOSTFOCUS {||lChBitmap()} STYLE ES_MULTILINE @ 106,nTop-30 EDITBOX oEdit SIZE 390, 56 STYLE ES_MULTILINE @ 10,nTop BUTTON "Показать" SIZE 80, 26 ON CLICK {||lChBitmap()} // Активируются все объекты окна и ожидание события ************************** * Вылет при выполнеии * oEdit:SetFocus() * Error BASE/1004 Class: 'NIL' has no exported method: SETFOCUS ACTIVATE WINDOW oMainWind RETU * -------------------------------------------------------------------------------------------------- * При вводе знаков генерации QR кода, а точнее при потере фокуса на EDIT она будет перерисовываться FUNC lChBitmap() * LOCA cTxt:="17N00000ABLPONIUZUK05Z0212110060000251417714923913814124721320664222" LOCA cPict:="" // cTxt:=Alltrim(oEdit:value) *********************************************** * Вылет при любой ссылки на объект oEdit при любом назначении, что PRIV, что STAT LOCA cTxt:=Alltrim(MEMV->oEdit:GetText()) hwg_Msginfo(cTxt) // Не преобразую, если ничего не введено IF Empty(cTxt) THEN RETU .F. // Создаю новый файл картинки QR кода и перегружаю его в объект cPict := cQRGen(cTxt,"","qr.bmp") * hwg_Msginfo(cPict) * MEMV->oBtmp:Release() * MEMV->oBitmap := HBitmap():AddFile(cPict) * MEMV->oBtmp:Refresh() RETU .F. * -------------------------------------------------------------------------------------------------- * Процедура заглушка для разрабатываемых режимов PROC pDummy() RETU * -------------------------------------------------------------------------------------------------- * Проверка переданных параметров PROC pDemo() LOCA nW:=hwg_GetDesktopWidth(), nH:=hwg_GetDesktopHeight() * LOCA nwW:=oMainWind:Width, nwH:=oMainWind:Height * hwg_Msginfo("Ширина экрана: "+Str(nW)+" высота экрана: "+Str(nH)+CRLF+"Ширина окна: "+Str(nwW)+" высота окна: "+Str(nwH)) hwg_Msginfo("Ширина экрана: "+Str(nW)+" высота экрана: "+Str(nH)+CRLF+"Количество контролов: "+Str(Len(oMainWind:aControls))) RETU

AndreyZh: Начал пробовать EDITBOX по Вашему совету. Сейчас заменил EDITBOX на @ 106,nTop-30 HCEDIT oEdit1 SIZE 390, 56 ON LOSTFOCUS {||cgTxt:=oEdit1:GetText(), lChBitmap(), .F.} Объект oEdit1 стал везде виден

AndreyZh: Так же работает конструкция: STAT oGet Proc Main() …. @ 106,nTop-30 GET oGet VAR cgTxt STYLE ES_MULTILINE SIZE 390, 56 и даже так работает, как ожидается: @ 106,nTop-30 GET oGet VAR cgTxt SIZE 390, 56 VALID {||lChBitmap()} STYLE ES_MULTILINE … FUNC lChBitmap() hwg_Msginfo(oGet:Value)

alkresin: Как я понял, проблемы три: 1) * Правильно ли понимаю, что ряд команд не "возвращает" объект и его приходится определять через опу Неправильно). В данном случае вместо: @ ... BITMAP oBitmap ID 1001 SIZE nbW, nbH ON CLICK {||pDemo()} надо @ ... BITMAP oBtmp SHOW oBitmap ID 1001 SIZE nbW, nbH ON CLICK {||pDemo()} 2) с EDITBOX и oEdit Здесь аналогично, должно быть: @ 106,nTop-30 EDITBOX oEdit CAPTION "" иначе, если как вас, oEdit воспринимается как CAPTION - см. соответствующую команду в документации, или в guilib.sh 3) border - это надо посмотреть.

AndreyZh: Спасибо! Ещё раз почитаю мануал и попробую... Кстати @ x,y,GET не нашел в описаниях - смотрел по *.ch

alkresin: AndreyZh пишет: Кстати @ x,y,GET не нашел в описаниях http://www.kresin.ru/hwgdoc_commands.html#Commands4 И в doc/hwgdoc_commands.html в том же месте. С border разобрался, исправил.

AndreyZh: alkresin пишет: И в doc/hwgdoc_commands.html в том же месте Вы пополняете документацию быстрее, чем я скачиваю от туда информацию... клянусь, что 2 недели назад этого раздела не было... Первый учебный пример вроде бы заработал, как хочу и многим, как утилитка может полезна "просмотр и печать в любом размере QR кодов". Исходник могу разместить, но он использует стороннюю DLL, а так скачать всё можно Программа формирования QR кодов З.Ы. Ждите повышения "интереса" к Вашей разработке, а когда у меня будет время - продолжу освоение?

alkresin: AndreyZh пишет: Вы пополняете документацию быстрее, чем я скачиваю от туда информацию... клянусь, что 2 недели назад этого раздела не было... Был. Клясться не буду, но честное слово дам.

taras56: orland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland test.c: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: Unresolved external '_hb_extIsNil' referenced from C:\HARBOUR\LIB\HWGUI.LIB|window Error: Unresolved external '_hb_itemEqual' referenced from C:\HARBOUR\LIB\HWGUI.LIB|drawtext каталоги c:\harbour ( в папки include и lib добавлены файлы из hwgui 2.21) c:\bcc в примере модуль а.prg ком. файл cld.bat так-же ошибка



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