Форум » 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

gfilatov2002: Haz пишет: могу в отдельный пример накидать Да, конечно. Такой пример будет интересен в качестве альтернативы...

SergKis: gfilatov2002 Поправить надо[pre2] CLASS TWndData ... METHOD GetProp( xKey ) INLINE iif( xKey == NIL, ::oProp, ::oProp:Get( xKey ) ) ... [/pre2]

gfilatov2002: SergKis пишет: Поправить Принято. Благодарю за помощь


rvu: В уникодной версии Upper() только с английским языком работает msginfo(UPPER('abc абв áéíóú')) -> ABC абв áéíóú При этом DEFINE COMBOBOX ... UPPERCASE .T. END COMBOBOX переводит регистр правильно в любом языке из тех, что пробовал. Раньше, в неуникодной программе, я переводил данные в STR, потом делал Upper, но сейчас msginfo(HB_STRTOUTF8(UPPER(HB_UTF8TOSTR('abcабв',"RU1251")),"RU1251")) тоже не работает. Как бы с этим справиться? В принципе, могу, конечно, написать свою функцию, где условно 'абвгдежзийклмнопрстуфхцчшщъыьэюя' менять на 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'. Но может есть уже штатные средства?

SergKis: rvu пишет В уникодной версии Upper() только с английским языком работает Работает с русским, но с показом списка вопросик. Пример поправленный BASE\Combo_1 https://TransFiles.ru/jyfhn список Combo_1 контрола не отобржается, а выбор работает список Combo_2 контрола работает нормльно

gfilatov2002: rvu пишет: Как бы с этим справиться? Добавил две новые функции: - HMG_UPPER(), - HMG_LOWER(). Результат работы см. на картинке.

SergKis: gfilatov2002 пишет Добавил две новые функции: А разве старые upper() и lower() не должны работать с utf8 сразу ? Если переносить тексты в unicode версию, замучишься править

gfilatov2002: SergKis пишет: разве старые upper() и lower() не должны работать с utf8 Увы, не работают. Это выглядит, как недоработка в Харборе...

gfilatov2002: SergKis пишет: Если переносить тексты в unicode версию Проблема решается с помощью препроцессора

rvu: SergKis пишет: Если переносить тексты в unicode версию, замучишься править В редакторе сразу все. Автоматом. Почему нет?

SergKis: gfilatov2002 пишет Проблема решается с помощью препроцессора rvu пишетВ редакторе сразу все. Автоматом. Почему нет? Это ф-ии hb, они должны работать в UNICODE сборке автоматом, по идее, без костылей иначе смысл такой сборки теряется, тут работает, а здесь нет. gfilatov2002 пишет Увы, не работают. Это выглядит, как недоработка в Харборе... Получается, что строки надо переводить из utf8 в нужную кодировку работать, как раньше, в однобайтной сборке и опять переводить в utf8 для контролов. Тогда смысл utf8 кодировки теряется, контролы в unicode, а работа в однобайтной схеме вполне хватило бы, переводить строки unicode->ansi->unicode, без utf8

rvu: SergKis пишет: работа в однобайтной схеме вполне хватило бы, переводить строки unicode->ansi->unicode, без utf8 Да вот не смогли мы мои хотелки реализовать в своё время. Я тогда очень пытался по вашим советам.

rvu: Следующая проблема с уникодной версией: msginfo(AT('D','ABCDEF')) -> 4 msginfo(AT('Г','АБВГДЕ')) -> 7 С hb_At() аналогично.

gfilatov2002: rvu пишет: С hb_At() аналогично Пробуйте функцию hb_UAt() Также в Харборе есть такие дополнительные функции hb_ULeft() hb_URight() hb_ULen() и т.д.

gfilatov2002: Выложил Update 3 для сборки 21.05 с учетом всех последних исправлений и дополнений по адресу http://hmgextended.com/files/CONTRIB/hmg-21.05-setup.exe Обновил также UNICODE архив...

rvu: gfilatov2002 , спасибо!

SergKis: gfilatov2002 пишет Обновил также UNICODE архив... Пример выше Combo_1 работает, показывает список развернутый, если поправить имя фонта (в родном hmg примере имя задано неверно) [pre2] #define _HMG_OUTLOG #include "hmg.ch" REQUEST HB_CODEPAGE_UTF8, HB_CODEPAGE_RU1251 FUNCTION Main LOCAL a1, a2 SET CODEPAGE TO UNICODE a1 := { ' 1 | Līnijas ' , ' 2 | Rindās ' , ' 3 | Drukāt ' } //a1 := { ' 1 | Один ' , ' 2 | Два ' , ' 3 | Три ' } a2 := { ' 1 | Один - Uno' , ' 2 | Два - Dos' , ' 3 | Три - tres' } a1 := &( hmg_upper(hb_valtoexp(a1)) ) DEFINE WINDOW Form_1 ; AT 0,0 ; WIDTH 400 ; HEIGHT 200 ; TITLE 'ComboBox Demo' ; MAIN @ 20,20 COMBOBOX Combo_1 ; WIDTH 150 ; ITEMS a1 ; VALUE 1 ; ON ENTER {|| MsgInfo ( hb_ntos(This.Combo_1.ITEMHEIGHT)+CRLF+ ; hb_ntos(This.Combo_1.Value)+CRLF+ ; This.Combo_1.DisplayValue ) } ; // UPPERCASE ; ITEMHEIGHT 21 ; FONT 'Courier New' SIZE 12 DEFINE COMBOBOX Combo_2 ROW 20 COL ( This.Combo_1.Col+This.Combo_1.Width + 10 ) WIDTH 150 ITEMS a2 VALUE 1 ON ENTER {|cn| cn :=This.Name, MsgInfo ( hb_ntos(This.&(cn).ITEMHEIGHT)+CRLF+ ; hb_ntos(This.&(cn).Value)+CRLF+ ; This.&(cn).DisplayValue ) } //LOWERCASE .T. ITEMHEIGHT 17 END COMBOBOX END WINDOW CENTER WINDOW Form_1 ACTIVATE WINDOW Form_1 Return Nil [/pre2]

Haz: gfilatov2002 пишет: Да, конечно. Такой пример будет интересен в качестве альтернативы... собрал на скорую тест лог ошибок в json . Еще подпилю позже чуть https://drive.google.com/drive/folders/1Bf5cWHu6qnsv8xJw8aXapZvABQ3JTPdZ?usp=sharing

gfilatov2002: Haz пишет: собрал на скорую OK Подход понравился...

Haz: gfilatov2002 пишет: Подход понравился Это то , что выдернул из проекта и включил в отдельный пример, чтоб показать о чем речь. Сама идея тут понятна, но пример нужно доделать, этим займусь в ближайшее дни. В проекте работает до сих пор успешно, ошибки просматривать удобно и быстро. Что касается вывода сообщения пользователю , этим не заморачивался, просто пишу извини не получилось и войди заново. 😝



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