Форум » GUI » Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение) » Ответить

Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)

gfilatov: Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).

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

Alex_Cher: gfilatov2002 пишет: Нет, речь шла о новой майской сборке снова извиняюсь .., а откуда качать, там на http://hmgextended.com/files/CONTRIB/hmg-22.05-setup.exe нет ничего ...?

gfilatov2002: Alex_Cher пишет: а откуда качать Финальная сборка майского релиза еще не готова. Речь шла о предварительных версиях, которые доступны только для разработчиков из команды Minigui

SergKis: gfilatov2002 правка, проскакивает cHeading == NIL (h_tbrowse.prg) [pre2] STATIC FUNCTION SetHeights( oBrw ) ... // Now for cells nHHeight := oBrw:nHeightCell FOR nEle := 1 TO Len( oBrw:aColumns ) ... IF ValType( cHeading ) == "C" .AND. At( Chr( 13 ), cHeading ) > 0 .OR. ; ValType( cHeading ) == "M" .OR. oColumn:cDataType != NIL .AND. oColumn:cDataType == "M" DEFAULT cHeading := "" IF Empty( oBrw:nMemoHV ) IF At( Chr( 13 ), cHeading ) > 0 oBrw:nMemoHV := Len( hb_ATokens( cHeading, Chr( 13 ) ) ) ENDIF ENDIF DEFAULT oBrw:nMemoHV := 2 ... [/pre2]


gfilatov2002: SergKis пишет: правка OK

SergKis: gfilatov2002 Я правильно понимаю, что COMBOBOXEX в unicode версии с utf8 строками не работает ? Пример требует перекодировки из utf8 => RU1251 (версия hmg unicode prg с bom utf8)[pre2] LOCAL aLangsR := { "Русский", "Английский", "Украинский", "Белорусский" , "Казахский" } ... FOR nI := 1 TO LenU( aLangsR ) AAdd( aLangs, hb_utf8ToStr(aLangsR[ nI ] + " (" + aLangsE[ nI ] + ")", "RU1251") ) NEXT @ 10, nFWidth - 300 COMBOBOXEX ComboEx_1 ; WIDTH 340 HEIGHT 200 ; ITEMS aLangs ; VALUE M->nPubLang ; IMAGE aFlags ; TOOLTIP 'Выбор языка / Select lang' INVISIBLE ; ON LISTCLOSE Forma_1.ComboEx_1.Hide ; ON CHANGE { || M->nPubLang := Forma_1.ComboEx_1.Value, ; Forma_1.ComboEx_1.Hide, Forma_1.Image_1.Hide ,; Forma_1.Image_1.Picture := aFlags[M->nPubLang],; Forma_1.Image_1.Col := GetClientWidth( GetFormHandle("Forma_1") ) - 30, ; MyTitleFormLang(), MyTitleSHLang() ,; Forma_1.Image_1.Show, Forma_1.Image_1.Setfocus } .. [/pre2] С выделенным цветом тексты в списке COMBOBOX ok, без ф-ии - кракозяблики

gfilatov2002: SergKis пишет: COMBOBOXEX в unicode версии с utf8 строками не работает Да, все верно. На входе COMBOBOXEX принимает строки в формате ANSI. Это сделано с учетом того, что эти строки могут быть получены из базы данных, которая м.б. для совместимости в формате ANSI. Перекодировка этих строк в уникод происходит уже внутри COMBOBOXEX

SergKis: gfilatov2002 пишет Это сделано с учетом того, что эти строки могут быть получены из базы данных, которая м.б. для совместимости в формате ANSI. Не понял ? Для базы мы указываем CODEPAGE конкретную и на уровне hb получаем перекодировку, т.е. SET CODEPAGE TO UNICODE ... USE ( cPath + cFileDbf ) Alias TABLE1 CODEPAGE "RU1251" VIA "DBFCDX" NEW //SHARED и работаем без всяких дополнений с utf8 данными из полей строковых aLangsR := { "Русский", "Английский", "Украинский", "Белорусский" , "Казахский" } cStr := SPACE(20)+"Папки сравнения и проект для сравнения:" + CRLF в таких вариантах тоже имеем utf8 Не логично поддерживать ANSI, по мне, для COMBOBOX... и др. контролов. Исп. язык не зависит от программы, зависит от пользователя в unicode. Получается что для COMBOBOXEX надо иметь еще таблицу имеющихся codepage к каждому элементу массива aLangsR := { "Русский", "Английский", "Украинский", "Белорусский" , "Казахский" } в чем смысл, не пойму . Тем более, что Перекодировка этих строк в уникод происходит уже внутри COMBOBOXEX

gfilatov2002: Выложил последнюю сборку 22.05 click here

SergKis: gfilatov2002 В версии unicode ButtonEx Tooltip не отображает строку в utf8, надписи на кнопке Ok https://postimg.cc/PCtnbHPQ

gfilatov2002: SergKis пишет: В версии unicode ButtonEx Tooltip не отображает строку в utf8 Проверил на системе без установки кодовой страницы - Tooltip отображает строку в utf8 правильно. Добавил в начало программы установку [pre2]set codepage to russian [/pre2]и получил кракозябры в тултипе, как и следовало ожидать. Вывод: проверьте наличие этой установки у себя в коде Также возможно следует добавить перед вызовом формы команду [pre2]set codepage to unicode[/pre2]

SergKis: gfilatov2002 пишет и получил кракозябры в тултипе, как и следовало ожидать В начале программе стоит (больше нет установок codepage) SET CODEPAGE TO UNICODE RDDSETDEFAULT('DBFCDX') SET OOP ON В ф-ии кнопка формируется [pre2] ... ? procname(), cObject, cTooltip, hb_utf8ToStr(cTooltip, 'RU1251') DEFINE BUTTONEX &cObject PARENT &cForm ROW nRow COL nCol WIDTH nWidth HEIGHT nHeight ICON cResIco CAPTION cCaption ACTION Eval( bAction ) TOOLTIP cTooltip VERTICAL lTextVertical LEFTTEXT lTextLeft FLAT .F. FONTNAME cFont FONTSIZE nFontSize FONTBOLD lFontBold FONTCOLOR aFontColor BACKCOLOR aBACKCOLOR UPPERTEXT .F. NOHOTLIGHT .F. NOXPSTYLE .T. HANDCURSOR .T. ONMOUSEHOVER ( SetProperty(ThisWindow.Name, this.name, "ICON", cResIco2), SetProperty(ThisWindow.Name, cObject, "fontcolor", aFontColorInvert ) ) ONMOUSELEAVE ( SetProperty(ThisWindow.Name, this.name, "ICON", cResIco) , SetProperty(ThisWindow.Name, cObject, "fontcolor", aFontColor) ) NOTABSTOP .F. INVISIBLE lHide END BUTTONEX [/pre2] выделенная цветом строка дает правильное значение cTooltip - кодировка utf8 hb_utf8ToStr(cTooltip, 'RU1251') - кодировка 1251 cTooltip задается в коде программы на кнопки (prg все в utf8) aObj3But[2,13] := 'Копировать файлы из папки 1 в папку 2' // подсказка aObj3But[3,13] := 'Копировать файлы из папки 2 в папку 1' // подсказка PS cTooltip := hb_utf8ToStr(cTooltip, 'RU1251') и DEFINE BUTTONEX &cObject ... выводит Tooltip правильно (версия hmg 22.03.0 unicode)

gfilatov2002: Выложил 2-й апдейт сборки 22.05 с учетом всех последних исправлений click here Желаю всем удачи...

gfilatov2002: Выложил последнюю сборку 22.06 click here Желаю всем МИРА и добра

gfilatov2002: Выложил 1-е обновление сборки 22.06 с учетом последних исправлений и дополнений См. ссылку для выкачки в посте выше

gfilatov2002: Выложил 2-е обновление сборки 22.06 с учетом последних исправлений и дополнений click here

gfilatov2002: Завершена подготовка новой сборки 22.07, которая будет опубликована завтра. Что нового: - глобальный пересмотр Си-кода с использованием макросов вида hmg_par_* / hmg_ret_* и макросов унификации Си-типов. Желаю всем доброго здоровья и успеха в делах

gfilatov2002: Как и обещал, выложил финальную сборку 22.07 click here

Andrey: Поставил новую версию. Заметил фигню у себя в прогах и в примере \MiniGUI\SAMPLES\BASIC\ButtonEx_DynamicMenu\demo.exe Мышкой когда проводишь по кнопкам БЫСТРО - все кнопки затеняются и только потом затенение проходит. Как то очень некрасиво происходит. Убрать этот эффект можно ?

SergKis: gfilatov2002 Небольшие правки [pre2] TControl.prg ... METHOD lValid() INLINE If( ::bValid != nil, !Empty(Eval( ::bValid, Self )), .t. ) METHOD lWhen() INLINE If( ::bWhen != nil, !Empty(Eval( ::bWhen, Self )), .t. ) ... METHOD GotFocus( hCtlLost ) HB_SYMBOL_UNUSED( hCtlLost ) ::lFocused := .T. ::SetMsg( ::cMsg ) if ::bGotFocus != nil return Eval( ::bGotFocus, Self ) endif return nil METHOD KeyChar( nKey, nFlags ) CLASS TControl ... if ::bKeyChar != nil return Eval( ::bKeyChar, nKey, nFlags, Self ) endif return 0 METHOD KeyDown( nKey, nFlags ) CLASS TControl ... if ::bKeyDown != nil return Eval( ::bKeyDown, nKey, nFlags, Self ) endif return 0 METHOD LButtonDown( nRow, nCol, nKeyFlags ) CLASS TControl ::lMouseDown := .T. ::nLastRow := nRow ::nLastCol := nCol if ::bLClicked != nil return Eval( ::bLClicked, nRow, nCol, nKeyFlags, Self ) endif return nil METHOD LButtonUp( nRow, nCol, nKeyFlags ) CLASS TControl if ::bLButtonUp != nil return Eval( ::bLButtonUp, nRow, nCol, nKeyFlags, Self ) endif return nil METHOD LostFocus( hWndGetFocus ) CLASS TControl ::lFocused := .F. ::SetMsg() if ! Empty( ::bLostFocus ) return Eval( ::bLostFocus, hWndGetFocus, Self ) endif RETURN nil METHOD MouseMove( nRow, nCol, nKeyFlags ) CLASS TControl ... if ::bMMoved != nil return Eval( ::bMMoved, nRow, nCol, nKeyFlags, Self ) endif return 0 METHOD RButtonUp( nRow, nCol, nKeyFlags ) CLASS TControl if ::bRButtonUp != nil Eval( ::bRButtonUp, nRow, nCol, nKeyFlags, Self ) endif return nil METHOD ReSize( nSizeType, nWidth, nHeight ) CLASS TControl ::CoorsUpdate() if ::bResized != nil Eval( ::bResized, nSizeType, nWidth, nHeight, Self ) endif return nil Для использования :bLButtonUp := {|row,col,flag,ob| ? ":bLButtonUp",row,col,flag,ob IF hb_IsObject(ob) ?? ob:ClassName, ob:nCell ENDIF Return Nil } :bWhen := {|ob| ? ":bWhen",ob IF hb_IsObject(ob) ?? ob:ClassName, ob:nCell ENDIF Return .T. } :bGotFocus := {|ob| ? ":bGotFocus",ob IF hb_IsObject(ob) ?? ob:ClassName, ob:nCell ENDIF Return .T. } ... Результат :bGotFocus 'O' TSBROWSE 1 :bWhen 'O' TSBROWSE 1 :bLClicked 8 92 1 'O' TSBROWSE 2 :bLButtonUp 8 92 0 'O' TSBROWSE 2 :bLClicked 7 152 1 'O' TSBROWSE 3 :bLButtonUp 7 152 0 'O' TSBROWSE 3 :bLClicked 9 246 1 'O' TSBROWSE 4 :bLButtonUp 9 246 0 'O' TSBROWSE 4 :bLClicked 12 22 1 'O' TSBROWSE 1 :bLButtonUp 12 22 0 'O' TSBROWSE 1 :bGotFocus 'O' TSBROWSE 1 :bLClicked 7 104 1 'O' TSBROWSE 2 :bLButtonUp 7 104 0 'O' TSBROWSE 2 :bLClicked 11 162 1 'O' TSBROWSE 3 :bLButtonUp 11 162 0 'O' TSBROWSE 3 :bLClicked 6 237 1 'O' TSBROWSE 4 :bLButtonUp 6 237 0 'O' TSBROWSE 4 :bLClicked 10 28 1 'O' TSBROWSE 1 :bLButtonUp 10 28 0 'O' TSBROWSE 1 [/pre2]

gfilatov2002: SergKis пишет: Небольшие правки Принято с благодарностью



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