On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
модератор




Пост N: 699
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)


Начало темы находится здесь, а теперь

АНОНС * АНОНС * АНОНС * АНОНС * АНОНС

Готовится к опубликованию новая сборка №48, которая выйдет в конце недели.
Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне

Кратко, что нового:

- исправление обнаруженных ошибок и неточностей кода;
- новый класс HEADERIMAGE для Grid и Browse;
- свойство Address в Hyperlink может теперь открывать папку или файл на диске;
- добавлен NOTABSTOP класс для Browse;
- поддержка пользовательских компонентов (заимствована из оффициального релиза);
- расширения и исправления в библиотеках TsBrowse и PropGrid;
- обновлены сборки Харбор и HMGS-IDE;
- новые и обновленные старые примеры (как обычно ).




Спасибо: 5 
ПрофильЦитата Ответить
Ответов - 224 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 All [только новые]


moderator




Пост N: 1846
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 01.04.21 12:55. Заголовок: SergKis пишет: Хоро..


SergKis пишет:

 цитата:
Хорошо бы с nKey иметь похожую ф-ю


Да, такая функция уже есть в Харборе - hb_UChar(nKey)

SergKis пишет:

 цитата:
Помочь не против


Я обновил архив уникод версии 21.03 с учетом последних изменений, посмотрите, пожалуйста

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3673
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.04.21 14:32. Заголовок: gfilatov2002 пишет G..


gfilatov2002 пишет
 цитата:
GetBox уже заработал с русским языком


Забрал архив, TGET от 01.04.2021
Взял пример GetBox\demo.prg -> utf8 с bom, изменил Скрытый текст

ввода русских букв нет, курсор перемещается с набранной буквой, вместо буквы [] квадратик

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1847
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 01.04.21 14:40. Заголовок: SergKis пишет: ввод..


SergKis пишет:

 цитата:
ввода русских букв нет


Да, все верно - надо было еще править Tget класс для корректной обработки шаблонов ввода.
Сейчас этот пример уже заработал, осталось поправить BackSpace, и можно залить исправленный архив.
Кстати, Ваш пример с использованием TBrowse теперь тоже понимает русский язык

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1848
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 01.04.21 16:07. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
осталось поправить BackSpace


Запарился исправлять TGet класс и его стыковку c GetBox.
Сейчас все заработало, выложил исправленный архив для проверки.
Прошу прощения за задержку...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3674
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.04.21 17:22. Заголовок: gfilatov2002 пишет З..


gfilatov2002 пишет
 цитата:
Запарился исправлять TGet класс и его стыковку c GetBox


Попробовал вариант
 
#translate SubStr( <s> , <p> ) => hb_USubStr( <s>, <p> )
#translate SubStr( <s> , <p>, <l> ) => hb_USubStr( <s>, <p>, <l> )

#translate Left( <s> , <l> ) => hb_ULeft( <s>, <l> )
#translate Right( <s> , <l> ) => hb_URight( <s>, <l> )

#translate At( <c> , <s> ) => hb_UAt( <c>, <s> )
#translate RAt( <c> , <s> ) => hb_URAt( <c>, <s> )

Работает, вроде, по -pOut.prg смотрел
Сложнее с Len(...), надо смотреть только для строк, я так понимаю
Или что то не учитываю ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3675
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.04.21 17:40. Заголовок: PS По поводу Len(.....


PS
По поводу Len(...), может так
 
FUNCTION __Len( x )
IF HB_ISCHAR( x ) ; RETURN hb_ULen( x )
ENDIF
RETURN Len( x )

#translate Len( <s> ) => __Len( <s> )


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3676
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.04.21 17:50. Заголовок: PS2 Еще #translate ..


PS2
Еще
 
#translate PadR( <s> , <l> ) => hb_UPadR( <s> , <l> )
#translate PadC( <s> , <l> ) => hb_UPadC( <s> , <l> )
#translate PadL( <s> , <l> ) => hb_UPadL( <s> , <l> )


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3677
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.04.21 18:47. Заголовок: gfilatov2002 пишет С..


gfilatov2002 пишет
 цитата:
Сейчас все заработало, выложил исправленный архив для проверки.



Примеры GetBox\demo.prg и вариант App_OppReport отработали с RU и LV языками
Пример тсб тут https://TransFiles.ru/5c5r6

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3678
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.04.21 20:47. Заголовок: gfilatov2002 Из кол..


gfilatov2002
Из колонки по Ctrl+C и Ctrl+V в редактор с utf8 все ok!
А обратно, из редактора utf8 в колонку вставка ломает текст.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1849
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 01.04.21 21:28. Заголовок: SergKis пишет: обра..


SergKis пишет:

 цитата:
обратно, из редактора utf8 в колонку вставка ломает текст


Уже поправил эту ошибку
Благодарю за сообщение

P.S. Выложил для проверки архив сборки с последними исправлениями.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3679
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.04.21 01:38. Заголовок: gfilatov2002 Собрал..


gfilatov2002
Собрал пример unicode, dbf ru1251 https://TransFiles.ru/231cz
Показывает ok! :Edit нет, не пойму uValue в TGetBox должна в utf8 попадать, но ... бяки в корректировке

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3680
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.04.21 01:44. Заголовок: PS На последней сбор..


PS
На последней сборке так же все

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3681
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.04.21 08:52. Заголовок: gfilatov2002 Нашел ..


gfilatov2002
Нашел Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3682
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.04.21 09:39. Заголовок: PS Добавил колонку с..


PS
Добавил колонку с cdp DEWIN, работает (ввод через Clipboard с сайта, язык не ставил), все ok!

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3683
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.04.21 10:29. Заголовок: PS2 Не понял, но не ..


PS2
Не понял, но не подключает REQUEST HB_LANG_LVWIN, а cplvwin.c есть в hb
Придется свою либ перекодировки подключать

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3685
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.04.21 10:42. Заголовок: gfilatov2002 Вопрос..


gfilatov2002
Вопросик по hbfbird. В contrib есть, в hb hmg не включен.
Есть причина или просто так ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3686
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.04.21 12:09. Заголовок: Кому интересно, прим..


Кому интересно, пример unicode с dbf ru1251 и dewin колонками https://TransFiles.ru/zxnsv
Выборка на кнопках работает

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1850
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 02.04.21 14:15. Заголовок: SergKis пишет: Наше..


SergKis пишет:

 цитата:
Нашел


Принято, благодарю за помощь

SergKis пишет:

 цитата:
Вопросик по hbfbird. В contrib есть, в hb hmg не включен.


Просто FireBird никто здесь не использует, во всяком случае, запроса на него не было

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3688
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.04.21 14:43. Заголовок: gfilatov2002 пишет П..


gfilatov2002 пишет
 цитата:
Просто FireBird никто здесь не использует


У нас оборудование вешают на него, кассы, охрана ...
На свой версии, файлы получали csv, возможно, напрямую надо будет, с unicode версией
это уже будет иметь смысл. Подключу к проекту потом.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3689
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.04.21 14:49. Заголовок: PS Не подскажите, по..


PS
Не подскажите, почему не проходит REQUEST HB_LANG_LVWIN, раньше не использовал,
перекодировали и работали с LV866, но в new версии, хотелось обойтись без лишних действий.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1851
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 02.04.21 15:01. Заголовок: SergKis пишет: поче..


SergKis пишет:

 цитата:
почему не проходит REQUEST HB_LANG_LVWIN


Попробуйте использовать

 цитата:
REQUEST HB_LANG_LV




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3690
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.04.21 15:09. Заголовок: gfilatov2002 пишет R..


gfilatov2002 пишет
 цитата:
REQUEST HB_LANG_LV


Спасибо , собралось
Нашел еще REQUEST HB_CODEPAGE_LVWIN это что ?
Как то запутали все, бум разбирать, пробовать, бум

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3691
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.04.21 21:11. Заголовок: gfilatov2002 С язык..


gfilatov2002
С языками получилось в тсб все как надо
Пример с 4-мя кодировками (Edit работает по ним) тут https://TransFiles.ru/yp6ui
Языковые тексты из prg идут на ура (как должно быть при utf8)
Спасибо за unicode версию

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3692
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.04.21 21:16. Заголовок: PS REQUEST HB_LANG_L..


PS

 цитата:
REQUEST HB_LANG_LV


Это Dos коировка

 цитата:
REQUEST HB_CODEPAGE_LVWIN


Это 1257 кодировка, которая нужна и в примере задействовал, все ok!

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3694
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.04.21 12:02. Заголовок: gfilatov2002 Не мог..


gfilatov2002
Не могу найти (уже глаза сломал), где ::lDontChange становится .T.
Делаю в примере (:lEdit := .T. все колонки и в показ добавил колонку MARRIED)
 
:lNoKeyChar := .T. // надо ставить иначе, lEdit := .T. по нажатию вкл. getbox на корркетировку
:UserKeys(VK_1, {|ob| MsgBox( "Test " + ob:GetColumn(ob:nCell):cName + CRLF, ob:cParentWnd ) } )
:bLDblClick := {|up1,up2,nfl,ob| up1:=up2:=nfl, ob:PostMsg(WM_KEYDOWN, VK_RETURN, 0)}
:UserKeys(VK_RETURN, {|ob|
IF ob:GetColumn(ob:nCell):cName == "STREET"
_wPost(111, ob:cParentWnd, ob)
ELSEIF ob:GetColumn(ob:nCell):lCheckBox //cName == "MARRIED"
ob:PostMsg( WM_KEYDOWN, VK_SPACE, 0 ) ; DO EVENTS
ELSE
_wPost(110, ob:cParentWnd, ob)
ENDIF
RETURN Nil
} )
В :HandleEvent() попадаем сюда, выделено
METHOD HandleEvent( nMsg, nWParam, nLParam ) CLASS TSBrowse
...
ELSEIF nMsg == WM_CHAR .AND. ::lEditing
RETURN 0
ELSEIF nMsg == WM_CHAR
RETURN ::KeyChar( nWParam, nLParam )
ELSEIF nMsg == WM_KEYDOWN .AND. ::lDontChange
RETURN 0

ELSEIF nMsg == WM_KEYDOWN
RETURN ::KeyDown( nWParam, nLParam )
...
и отрубаются назначенные клавиши Enter, Spase, dblClick

Может, свежим взглядом глянете ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3695
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.04.21 12:06. Заголовок: PS Причем, отключают..


PS
Причем, отключаются только (фокус курсор установлен) на колонке логической MARRIED,
на других все назначения клавиш и dblclick работают

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3696
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.04.21 12:28. Заголовок: PS2 Пока писал, поня..


PS2
Пока писал, понял, дело не в ::lDontChange (но где она становится .T., все равно, интересно),
а в :lNoKeyChar := .T.. По ней откл. метод ::KeyChar(), а в нем ::Edit() для логической колонки.
Установленные события срабатывают, не работает ob:PostMsg( WM_KEYDOWN, VK_SPACE, 0 ),
т.к. отключен ::KeyChar(). Тут что то надо ..., подумать

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3697
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.04.21 12:53. Заголовок: SergKis пишет Тут чт..


SergKis пишет
 цитата:
Тут что то надо ..., подумать


"Все уже украдено придумано до нас"
 
:UserKeys(VK_RETURN, {|ob|
IF ob:GetColumn(ob:nCell):cName == "STREET"
_wPost(111, ob:cParentWnd, ob)
ELSEIF ob:GetColumn(ob:nCell):lCheckBox //cName == "MARRIED"
ob:PostEdit(!ob:GetValue(ob:nCell), ob:nCell)

ELSE
_wPost(110, ob:cParentWnd, ob)
ENDIF
RETURN Nil
} )


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3698
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.04.21 16:34. Заголовок: SergKis пишет Тут чт..


SergKis пишет
 цитата:
Тут что то надо ..., подумать


Похоже надо, т.к. на самой колонке с :lCheckBox == .T. не работает LDblClick, не выходит на MsgBox()
а клавиши работают, т.е. имеем
 
// :lEdit := .T. на всех колонках
:lNoKeyChar := .T.
:UserKeys(VK_1, {|ob,lo| MsgBox( "Test " + ob:GetColumn(ob:nCell):cName + CRLF, ob:cParentWnd ) })
:bLDblClick := {|up1,up2,nfl,ob| up1:=up2:=nfl, MsgBox(":bLDblClick press", "INFO"), ;
ob:PostMsg( WM_KEYDOWN, VK_RETURN, 0 ) }
:UserKeys(VK_RETURN, {|ob|
IF ob:GetColumn(ob:nCell):lCheckBox //cName == "MARRIED"
ob:PostEdit(!ob:GetValue(ob:nCell), ob:nCell)
RETURN Nil // завершить работу метода :KeyDown(), вкл. поле на корректировку
ENDIF
RETURN .T. // продолжить работу метода :KeyDown()
} )


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3699
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.04.21 16:37. Заголовок: PS Не туда дописал ..


PS
Не туда дописал
 
RETURN Nil // завершить работу метода :KeyDown(), вкл. поле на корректировку
ENDIF
RETURN .T. // продолжить работу метода :KeyDown(), вкл. поле на корректировку


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3703
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.04.21 17:12. Заголовок: SergKis пишет ..


SergKis пишет
 цитата:
// :lEdit := .T. на всех колонках
:lNoKeyChar := .T.


Может я рвусь в открытую дверь ? И есть способ отключить метод :KeyChar() для выключения авто корректировки
в GetBox при нажатии букв, цифр. Пытаюсь понять некоторые моменты, отличающиеся в работе тек. версии hmg и
своей раб. версией, т.к. при нажатии букв, цифр вкл. другие режимы работы.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3706
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.04.21 07:44. Заголовок: gfilatov2002 Можно ..


gfilatov2002
Можно чуток поправить
 
FUNCTION _GetStatusItemWidth( hWnd, nItem )
...
RETURN iif( !Empty(nItem), aItemWidth [nItem], aItemWidth )

h_objects.prg
CLASS TStbData INHERIT TCnlData
...
METHOD Width ( nItem, nWidth ) INLINE iif( HB_ISNUMERIC( nWidth ) .AND. nWidth > 0, ;
_SetStatusWidth ( ::oWin:cName, hb_defaultValue( nItem, 1 ), nWidth ), ;
_GetStatusItemWidth( ::oWin:nHandle, nItem ) )



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3707
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.04.21 08:03. Заголовок: Еще METHOD KeyChar( ..


Еще
 
METHOD KeyChar( nKey, nFlags ) CLASS TSBrowse
LOCAL cComp, lProcess, cTypeCol
LOCAL ix
LOCAL lNoKeyChar := ::lNoKeyChar

DEFAULT ::nUserKey := nKey

cTypeCol := iif( ::nLen == 0, "U", ValType( ::bDataEval( ::aColumns[ ::nCell ] ) ) ) // Modificado por Carlos

IF cTypeCol == "L" .AND. ::aColumns[ ::nCell ]:lCheckBox .AND. nKey == VK_SPACE
lNoKeyChar := .F.
ENDIF

IF ::nUserKey == 255 .OR. ! ::lEnabled .OR. lNoKeyChar // from KeyDown() method
RETURN 0
ENDIF

IF ::lAppendMode
RETURN 0
ENDIF

::lNoPaint := .F.
//cTypeCol := iif( ::nLen == 0, "U", ValType( ::bDataEval( ::aColumns[ ::nCell ] ) ) ) // Modificado por Carlos

IF Upper( ::aMsg[ 1 ] ) == "YES"

тогда решается edit логического поля при ::lNoKeyChar := .T.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1852
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 05.04.21 10:05. Заголовок: SergKis пишет: попр..


SergKis пишет:

 цитата:
поправить


OK

SergKis пишет:

 цитата:
решается edit логического поля при ::lNoKeyChar := .T.


Принято с благодарностью

P.S. Обновил unicode сборку с учетом всех последних изменений, в т.ч. обновил компилятор Harbour

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1853
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 07.04.21 09:48. Заголовок: Выложил 1-е обновлен..


Выложил 1-е обновление сборки 21,03 с учетом всех последних изменений по адресу

http://hmgextended.com/files/CONTRIB/hmg-21.03-setup.exe

Что нового:
Скрытый текст



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3708
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.04.21 22:47. Заголовок: gfilatov2002 Пример..


gfilatov2002
Пример BASIC\Firebird работает в unicode версии, RU1251, LV1257 (LVWIN) поддерживает.
Buid Скрытый текст

Demo.prg (UTF8 с BOM) Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1854
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 08.04.21 09:36. Заголовок: SergKis пишет: Прим..


SergKis пишет:

 цитата:
Пример BASIC\Firebird работает в unicode версии


Ok
Благодарю за подтверждение

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1855
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.04.21 09:32. Заголовок: Всем кому это интересно :)


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

http://hmgextended.com/files/CONTRIB/hmg-21.03-setup.exe

Что нового:
Скрытый текст

Также подготовил MinGW сборки с использованием свежей версии 10.3 (вышла 8 апреля 2021 г.)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6940
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.04.21 16:10. Заголовок: Поставил, полёт норм..


Поставил, полёт нормальный !

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1856
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 26.04.21 10:45. Заголовок: Всем кому это интересно 8-)


Завершена подготовка 3-го обновления сборки 21.03, которое выйдет послезавтра.

Что нового:
Скрытый текст

Ваши комментарии приветствуются...

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1857
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 28.04.21 09:41. Заголовок: Как и обещал, выложи..


Как и обещал, выложил 3-е обновление сборки 21.03 с учетом всех последних исправлений

Рассматриваю эту сборку как финальную по причинам, которые неоднократно озвучивались ранее (слабый интерес и отсутствие поддержки).

Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 202
Зарегистрирован: 17.10.05
ссылка на сообщение  Отправлено: 28.05.21 14:25. Заголовок: _SetStatusItemWidth


Проверил псевдофункцию _SetStatusItemWidth из файла i_status.ch - она не работает.
Отработала процедура PROCEDURE _SetStatusWidth ( ParentForm , Item , Size ) файла h_controlmisc.prg

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 320
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 29.05.21 11:24. Заголовок: В уникодной версии п..


В уникодной версии пытаюсь вывести значение из базы, где оно записано в кодировке 1251

HB_STRTOUTF8(ALLTRIM(BASECONFIG->NAME2))

Показывает ерунду.

А так - HB_STRTOUTF8('проба') нормально показывает.

Пытался второй параметр HB_STRTOUTF8() прописывать, что ни пробовал, ничего не вышло.

Можно, конечно, саму базу под UTF8 переделать, но интересно, почему здесь не работает.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3738
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.05.21 11:32. Заголовок: rvu HB_STRTOUTF8(AL..


rvu
HB_STRTOUTF8(ALLTRIM(BASECONFIG->NAME2), "RU1251")

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 321
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 29.05.21 11:54. Заголовок: SergKis При компил..


SergKis

При компиляции выдает ощибку. Причем, со словом "проба" тоже. Неверный аргумент.

Подумал, что HB_STRTOUTF8('проба') это неверно, у меня же текст программы уникодный. Что и куда она перекодирует?
Написал HB_STRTOUTF8(HB_UTF8TOSTR('проба')) и даже HB_UTF8TOSTR('проба'). Текст, написанный в программе она никак никуда не меняет.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3739
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.05.21 12:02. Заголовок: Ранее уже выкладывал..


Ранее уже выкладывал пример unicode, повторю
тут https://TransFiles.ru/2f2l2

Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 322
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 29.05.21 12:14. Заголовок: SergKis Отлично! С..


SergKis

Отлично! Спасибо!

К сожалению эти примеры долго не живут, упустил я его в прошлый раз.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3740
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.05.21 13:21. Заголовок: PS чуток поправить н..


PS
чуток поправить надо (колонку вставил, а в отчетах не поправил)
 
*-----------------------------------------------------------------------------*
STATIC FUNC Report( oWnd, nEvent )
*-----------------------------------------------------------------------------*
...
LOCAL cNam := oBrw:aColumns[ nEvent+oBrw:nColumn("MARRIED") ]:cHeading
...


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 323
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 29.05.21 16:23. Заголовок: Вызывал раньше из св..


Вызывал раньше из своей основной программы другую, которую закрывал такой функцией:

#define WM_CLOSE 0x0010

FUNCTION CloseIt()
PARAMETERS closeDoc

LOCAL hWnd := FindWindowEx( ,,, Substr(closeDoc,2,LEN(closeDoc)-2) )

IF IsWindowHandle( hWnd )
PostMessage( hWnd, WM_CLOSE, 0, 0 )
Return .T.
ENDIF

Return .F.

После перехода на уникод перестало работать, IsWindowHandle( hWnd ) возвращает .F.
хотя тайтл окна правильный. Попробовал hb_utf8Substr, не помогло, да и вряд ли могло бы, у меня в тайтле только английские буквы и числа и пробел между ними.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3741
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.05.21 19:23. Заголовок: попробуйте EnumWindo..


попробуйте EnumWindows()
в примерах есть использование, поищите

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7374
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.05.21 19:57. Заголовок: rvu пишет: После пе..


rvu пишет:

 цитата:
После перехода на уникод перестало работать, IsWindowHandle( hWnd ) возвращает .F.


А что именно возвращается в hWnd в уникодной версии ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3742
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.05.21 20:13. Заголовок: Dima пишет Наверно ..


Dima пишет
 цитата:
А что именно возвращается в hWnd в уникодной версии ?


Наверно 0 (не найдено), т.к. ф-я
 
HB_FUNC( FINDWINDOWEX )
{
#ifndef UNICODE
LPCSTR lpszClass = ( char * ) hb_parc( 3 );
LPCSTR lpszWindow = ( char * ) hb_parc( 4 );
#else
LPWSTR lpszClass = AnsiToWide( ( char * ) hb_parc( 3 ) );
LPWSTR lpszWindow = AnsiToWide( ( char * ) hb_parc( 4 ) );
#endif
HB_RETNL( ( LONG_PTR ) FindWindowEx( ( HWND ) HB_PARNL( 1 ), ( HWND ) HB_PARNL( 2 ), lpszClass, lpszWindow ) );

#ifdef UNICODE
hb_xfree( lpszClass );
hb_xfree( lpszWindow );
#endif
}

Через EnumWindows() можно получить весь список hWnd, title и ClassName

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 324
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 30.05.21 10:51. Заголовок: Dima пишет: А что и..


Dima пишет:

 цитата:
А что именно возвращается в hWnd в уникодной версии ?



SergKis пишет:

 цитата:
Наверно 0



Да, 0.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7375
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.05.21 20:23. Заголовок: SergKis пишет: попр..


SergKis пишет:

 цитата:
попробуйте EnumWindows()


Это конечно вариант , но с другой стороны если "сломали" работающую функцию
FindWindowEx в уникодной версии , то надо бы починить.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3743
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.05.21 21:36. Заголовок: Dima пишет то надо б..


Dima пишет
 цитата:
то надо бы починить.


С этим никто не спорит. Понятно , что для unicode перелопачено много текста и отладка требуется.
Попробовал ф-ю EnumWindows() вариант (unicode версия hmg) Скрытый текст

Не работает GetWindowText(), через имя класса hWnd получен, через GetWindowText() нет.
Вариант unicode ф-ии GetWindowText() нашей версии и версии hmg
 
Наш (работает)
HB_FUNC( GETWINDOWTEXT )
{
HWND hWnd = ( HWND ) hb_parnl( 1 );
int iLen = GetWindowTextLength( hWnd );
TCHAR *cText = ( TCHAR * ) hb_xgrab( (iLen + 1)*2 );
int iRet = GetWindowText( hWnd, ( LPTSTR ) cText, (iLen + 1)*2 );

hb_retclen_t( cText, iRet );
hb_xfree( cText );
}


uncode HMG
HB_FUNC( GETWINDOWTEXT )
{
#ifdef UNICODE
LPSTR pStr;
#endif
HWND hWnd = ( HWND ) HB_PARNL( 1 );
int iLen = GetWindowTextLength( hWnd );
LPTSTR szText = ( TCHAR * ) hb_xgrab( ( iLen + 1 ) * sizeof( TCHAR ) );

iLen = GetWindowText( hWnd, szText, iLen + 1 );

#ifndef UNICODE
iLen = GetWindowText( hWnd, szText, iLen + 1 );

hb_retclen( szText, iLen );
#else
GetWindowText( hWnd, szText, iLen + 1 );

pStr = WideToAnsi( szText );
hb_retc( pStr );
hb_xfree( pStr );
#endif
hb_xfree( szText );
}


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3744
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.05.21 21:52. Заголовок: PS Результат вызовов..


PS
Результат вызовов ф-ии HandlesHbWin(...) в log Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3745
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.05.21 09:13. Заголовок: SergKis пишет Не раб..


SergKis пишет
 цитата:
Не работает GetWindowText()


Виноват, работает GetWindowText() и HandlesHbWin() работает.
Похоже заработался вчера.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1863
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 31.05.21 10:27. Заголовок: Выложил майскую ANSI..


Выложил майскую ANSI сборку 21.05 с учетом всех последних изменений по адресу

http://hmgextended.com/files/CONTRIB/hmg-21.05-setup.exe

Рассматриваю эту сборку как финальную

P.S. Архив уникодной сборки также обновил с учетом обсуждения работы функции GetWindowText()

Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3746
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.05.21 10:42. Заголовок: gfilatov2002 пишет А..


gfilatov2002 пишет
 цитата:
Архив уникодной сборки также обновил


Можно получить этот вариант на посмотрреть ?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 325
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 31.05.21 11:14. Заголовок: gfilatov2002 А хор..


gfilatov2002

А хорошо бы в уникодной версии тоже завести программы-примеры. SergKis выкладывал на днях один.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 326
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 31.05.21 11:20. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Архив уникодной сборки также обновил с учетом обсуждения работы функции GetWindowText()



А FindWindowEx() будете менять под уникод?

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1864
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 31.05.21 13:22. Заголовок: SergKis пишет: Можн..


SergKis пишет:

 цитата:
Можно получить этот вариант на посмотрреть ?


Отправил ссылку в личку

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3747
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.05.21 13:24. Заголовок: gfilatov2002 Спасиб..


gfilatov2002
Спасибо

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3748
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.05.21 14:27. Заголовок: gfilatov2002 что то..


gfilatov2002
что то не то с GetWindowText() unicode Скрытый текст

Снимается "Abnormal program termination"

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1865
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 31.05.21 16:55. Заголовок: SergKis пишет: что ..


SergKis пишет:

 цитата:
что то не то


Ваш пример у меня отработал нормально.

Прошу попробовать снова с самого начала...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3749
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.05.21 20:16. Заголовок: gfilatov2002 пишет П..


gfilatov2002 пишет
 цитата:
Прошу попробовать снова с самого начала...


Так и сделал, не помогло. Убрал GetWndowText(), вывод только класса - работает, на запросе текста валится на строке
32 15008680 GDI+ Hook Window Class
Пример Скрытый текст

Log файл (сначала вывод только с классом, потом с текстом) Скрытый текст

В последней версии не unicode - все работает

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3750
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.05.21 20:39. Заголовок: PS восстановил пред...


PS
восстановил пред. версию hmg-21.03-unicode, снятия нет, строка получается в лог такая (с бяками)
32 5244084 GDI+ Hook Window Class Geꆐ䮀;

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1866
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 31.05.21 21:47. Заголовок: SergKis пишет: не п..


SergKis пишет:

 цитата:
не помогло. Убрал GetWndowText(), вывод только класса - работает, на запросе текста валится


Проверял работу Вашего примера под Windows 7 и Windows 10 - проблем не было.

На всякий случай привожу текущую реализацию функции GetWindowText()
Скрытый текст



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3751
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.06.21 10:56. Заголовок: gfilatov2002 пишет Н..


gfilatov2002 пишет
 цитата:
На всякий случай привожу текущую реализацию функции GetWindowText()


Ф-ии отличаются, у меня вариант в zip такой Скрытый текст

сделал правку, но сборка не удалась, много warning-ов и в итоге не собирается пример

PS
в своей версии unicode строка
32 15008680 GDI+ Hook Window Class
выглядит так
37 22086474 GDI+ Hook Window Class G

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1867
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 01.06.21 11:25. Заголовок: SergKis пишет: сбор..


SergKis пишет:

 цитата:
сборка не удалась


Я уже обновил архив Unicode сборки, адрес прежний

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3752
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.06.21 12:47. Заголовок: gfilatov2002 пишет о..


gfilatov2002 пишет
 цитата:
обновил архив Unicode сборки


Работает пример на этой сборке, но смущает строка с бяками (в файле бяки визуально ? в квадратике)
32 86835678 GDI+ Hook Window Class G用眠眎;
в нашей сборке кракозябликов нет

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1868
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 02.06.21 13:06. Заголовок: Dima пишет: если &#..


Dima пишет:

 цитата:
если "сломали" работающую функцию
FindWindowEx в уникодной версии , то надо бы починить.


Поправил работу функции FindWindowEx в уникодной версии
Залил Unicode архив с исправлением как 1-й апдейт версии 21.05

Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 327
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 02.06.21 17:32. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Поправил работу функции FindWindowEx в уникодной версии
Залил Unicode архив с исправлением как 1-й апдейт версии 21.05



Большое спасибо!

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 328
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 02.06.21 20:41. Заголовок: Использую HPDFPRINT...


Использую HPDFPRINT.
А какую кодировку писать для уникода в SET HPDFDOC ENCODING TO?
И работает ли это вообще с уникодом?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6963
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.06.21 01:03. Заголовок: Искал для себя приме..


Искал для себя пример, нашёл вылет БЕЗ ПОКАЗА ОКНА ОШИБКИ в примере BASIC\Tooltip\TrackingToolTips
Что править не разбирался.

Подскажите как можно сделать типа Show Balloon для окна расположенного в Панели задач ?
Для трея примеры нашёл, а для Панели задачи нет.
Можно ли сделать Show Balloon чтобы располагался в правом верхнем углу рабочего стола на 10-20 секунд ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1869
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 07.06.21 10:53. Заголовок: Andrey пишет: нашёл..


Andrey пишет:

 цитата:
нашёл вылет БЕЗ ПОКАЗА ОКНА ОШИБКИ в примере BASIC\Tooltip\TrackingToolTips


Поправил в первом апдейте сборки 21.05
Благодарю за помощь

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1870
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 07.06.21 10:56. Заголовок: Всем кому это интересно


Выложил Update 1 для сборки 21.05 с учетом всех последних исправлений и дополнений по адресу

http://hmgextended.com/files/CONTRIB/hmg-21.05-setup.exe

Обновил также UNICODE архив для всех заинтересованных лиц

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 139
Зарегистрирован: 12.06.06
ссылка на сообщение  Отправлено: 08.06.21 08:08. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Выложил майскую ANSI сборку 21.05 с учетом всех последних изменений


Нельзя ли предусмотреть возможность переключения на старый добрый вариант вывода информации
в ErrorLog file (без анимации) ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1871
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 08.06.21 10:56. Заголовок: i3t4j6 пишет: вариа..


i3t4j6 пишет:

 цитата:
вариант вывода информации в ErrorLog file (без анимации


Просматриваю файл ErrorLog по клавише F3 в Total Commanderе - никакой анимации там нет.
Другой вариант - собственный обработчик ошибок, образцы есть в примерах

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 140
Зарегистрирован: 12.06.06
ссылка на сообщение  Отправлено: 08.06.21 12:22. Заголовок: Program Error -вывод..


Program Error -вывод ошибки на экран - обыкновенный текст на белом фоне, а не желтое на красном и на весь
экран !

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1872
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 08.06.21 12:28. Заголовок: i3t4j6 пишет: вывод..


i3t4j6 пишет:

 цитата:
вывод ошибки на экран - обыкновенный текст на белом фоне


Понял
Тогда только вариант с собственным обработчиком

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1691
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.06.21 15:28. Заголовок: i3t4j6 пишет: Progr..


i3t4j6 пишет:

 цитата:
Program Error -вывод ошибки на экран - обыкновенный текст на белом фоне, а не желтое на красном и на весь
экран !


у меня вообще валится без всяких окон, ни красных ни белых , хорошо хоть лог пишет
 
Time from start: 0 days 0 hours 0 mins 3 secs<BR>
<span class="error">Error MGERROR/0 Control: Btn_01 Of oDlg Not defined. Program terminated.</span>
</p>
<details><summary>
--------------------------------- Stack Trace ---------------------------------
<br/></summary><span class="stacktrace">
Called from MSGMINIGUIERROR(0)
<BR>
Called from VERIFYCONTROLDEFINED(0)
<BR>
Called from SETPROPERTY(0)
<BR>
Called from FILLDLG(0)
<BR>
Called from HMG_ALERT(0)
<BR>
Called from _ALERT(0)
<BR>
Called from ALERTSTOP(0)
<BR>
Called from SHOWERROR(0)
<BR>
Called from DEFERROR(0)
<BR>
Called from (b)ERRORSYS(0)
<BR>
Called from K_BROWSE(35) in module: K_Browse.prg
<BR>
Called from OPENPRJ(194) in module: Module.prg
<BR>
Called from (b)MAIN(290) in module: Main.prg
<BR>
Called from DO_WINDOWEVENTPROCEDURE(0)
<BR>
Called from TWNDDATA:DOEVENT(0)
<BR>
Called from DO_ONWNDLAUNCH(0)
<BR>
Called from (b)INIT(0)
<BR>
Called from EVENTS(0)
<BR>
Called from DOMESSAGELOOP(0)
<BR>
Called from _ACTIVATEWINDOW(0)
<BR>
Called from MAIN(404) in module: Main.prg



Саму ошибку сделал специально чтоб посмотреть на красное
 
FUNCTION K_Browse(oWnd, nPage)
LOCAl cSql := ""
LOCAl cBrw, cBrw1 := ""
LOCAl oBrw, oBrw1
LOCAl cAlias := ""
LOCAl cAlias1 := ""
LOCAL nRecCount := 0
LOCAL aFields := {}
LOCAL cCol := ""

? a[1]
// вот тут обращение к несуществующему массиву


ЗЫ пока Пересобрал библиотеку со старой редакцией ShowError(). работает хоть

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6964
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.06.21 17:03. Заголовок: Haz пишет: у меня в..


Haz пишет:

 цитата:
у меня вообще валится без всяких окон, ни красных ни белых , хорошо хоть лог пишет


Возьми в новом исходнике ErrorSys.prg строка 242:
      AlertStop( cMsg, "Program Error", "ZZZ_B_STOP64", 64, { { 217, 67, 67 } }, .T., bInit )

Поставь так:
    MsgStop( cMsg, "Program Error")    // обыкновенный текст на белом фоне 

Но ошибка на красном фоне приятней смотрится и юзер понятней что ошибка.

Я писал об ошибке в HMG_ALERT(), что-то там надо докрутить.
У меня тоже вылетает в FILLDLG().
Скорее всего ошибка здесь:
      bInit := {|| iif( GetControlType( "Say_01", "oDlg" ) == "EDIT",, ( ; 
SetProperty( "oDlg", "Say_01", "FontColor", YELLOW ), ;
SetProperty( "oDlg", "Say_01", "Alignment", "CENTER" ), ;
SetProperty( "oDlg", "Say_02", "FontColor", YELLOW ), ;
SetProperty( "oDlg", "Say_02", "Alignment", "CENTER" ) ) ) }

Не находит объект Say_02.
Ради теста добавь к себе в проект ErrorSys.prg и посмотри...

Я у себя сделал сохранения скрина экрана ошибки в папку ошибок - полезная штука для анализа ошибок.
У меня в проге один модуль работает с пятью таблицами.
И когда происходит ошибка, то я не могу понять где произошла ошибка.
Нет алиаса базы при ошибке, нет номера записи при ошибке.
Есть только номер строки ошибки и всё.
Скрин экрана ОЧЕНЬ помогает при анализе ошибки.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1692
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.06.21 17:18. Заголовок: Andrey пишет: Возьм..


Andrey пишет:

 цитата:
Возьми в новом исходнике ErrorSys.prg строка 242:


так уже старый вариант в исхоники перекомпилил
Andrey пишет:

 цитата:
Но ошибка на красном фоне приятней смотрится и юзер понятней что ошибка.

Ну тут на вкус и цвет все фломастеры разные. Мне наоборот кажется что от красных окон пользователи в обморок падать начнут. У меня есть проекты с очень бледным интерфейсом по цветам ( заказчик пожелал ) и красное окно точно ему не понравится.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6965
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.06.21 17:45. Заголовок: Haz пишет: Мне наоб..


Haz пишет:

 цитата:
Мне наоборот кажется что от красных окон пользователи в обморок падать начнут.


У меня наоборот, юзер не сообщает об ошибке.
Можно поправить на свой ЛЮБОЙ цвет в строке 237:
      SET MSGALERT BACKCOLOR TO MAROON  
SET MSGALERT FONTCOLOR TO WHITE

С новым модулем ErrorSys.prg легче стало править окно ошибки под себя.
В старом модуле у меня при ошибке кнопки Ok иногда не было видно, уходило за границу экрана.
Да и скопировать ошибку в буфер экрана - это уже давно у всех есть, а в МиниГуи не было до сих пор.
В новом модуле ErrorSys.prg так же зашит поиск по трём фильтрам:

Если прога стоит на сервере терминалов, то не понятно было какая станция свалилась по ошибке.
Сейчас добавлена вот такая строка:
   Html_LineText( HtmArch, 'User: ' + NetName() + " / " + GetUserName() )

Я в своём обработчике ошибок (исправленном под себя) добавил ещё такие строки:
 
Html_LineText( HtmArch, 'Application: ' + GetExeFileName() + " " + M->cPubVersProg )
Html_LineText( HtmArch, 'User: ' + NetName()+"/"+hb_UserName()+"/"+M->cOperator )
Html_LineText( HtmArch, 'DbInfo: Alias - '+ ALIAS() + ', Ord - ' + OrdSetFocus() + ;
', Recno - ' + HB_NtoS(RecNo()) + '/' + HB_NtoS(LastRec()) )


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1693
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.06.21 18:00. Заголовок: Andrey пишет: У мен..


Andrey пишет:

 цитата:
У меня наоборот, юзер не сообщает об ошибке.


я Сам смотрю по логам, плюс прилетает на почту сообщение ( опционально ) и в Bitrix сообщением по некоторым проектам
считаю что пользователь и сообщать не должен, т.к. многие прочитать что написано не в состоянии.

Andrey пишет:

 цитата:
Можно поправить на свой ЛЮБОЙ цвет в строке 237:


вопрос не в цвете, как поправить знаю. Вопрос в тихом падении, пользователь даже понять не может куда все делось.

Andrey пишет:

 цитата:
В новом модуле ErrorSys.prg зашит поиск по трём фильтрам:


наверное это хорошо. иногда быстрее просто текстовым просмотром глянуть особенно с телефона . Мне не принципиально в каком виде лог ведется , главное там все есть.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 141
Зарегистрирован: 12.06.06
ссылка на сообщение  Отправлено: 09.06.21 08:01. Заголовок: Haz пишет: Ну тут н..


Haz пишет:

 цитата:
Ну тут на вкус и цвет все фломастеры разные.


Поэтому я и предложил предусмотреть возможность переключения между классическим вариантом и
мультиками.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1873
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.06.21 09:23. Заголовок: i3t4j6 пишет: я и п..


i3t4j6 пишет:

 цитата:
я и предложил предусмотреть возможность переключения между классическим вариантом и
мультиками.


Благодарю за подсказку
Я добавил во втором апдейте текущей сборки новую команду:

 цитата:
SET SHOWREDALERT [ON | OFF]


для возможности управлять видом этого окна.
Скоро выложу это обновление

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3754
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.06.21 09:50. Заголовок: gfilatov2002 пишет Я..


gfilatov2002 пишет
 цитата:
Я добавил во втором апдейте текущей сборки новую команду:


Может вариант блока кода обработчика сделать для замены, что то такое
 
STATIC bErrorSys
FUNC _bErrorSys( bErr )
IF pCount() > 0 ; bErrorSys := bErr
ENDIF
RETURN bErrorSys
*-----------------------------------------------------------------------------*
PROCEDURE ErrorSys
*-----------------------------------------------------------------------------*
LOCAL bErr := _bErrorSys( bErr )
IF Valtype(bErr) != "B" ; bErr := { | oError | DefError( oError ) }
ENDIF
ErrorBlock( bErr )
#ifndef __XHARBOUR__
Set( _SET_HBOUTLOG, GetStartUpFolder() + "\error.log" )
Set( _SET_HBOUTLOGINFO, MiniGUIVersion() )
#endif
RETURN


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1874
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.06.21 10:06. Заголовок: SergKis пишет: Може..


SergKis пишет:

 цитата:
Может вариант блока кода обработчика сделать для замены


Сергей!

Идея понятна, но для такой замены есть же стандартные средства со времен Клиппера

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3755
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.06.21 10:12. Заголовок: gfilatov2002 пишет д..


gfilatov2002 пишет
 цитата:
для такой замены есть же стандартные средства со времен Клиппера


Что то я подзабыл, как это делать, так давно было
Для hmg подменяем ErrorSys.prg на свой вариант

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1875
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.06.21 10:28. Заголовок: SergKis пишет: подз..


SergKis пишет:

 цитата:
подзабыл, как это делать


См. примеры в папках:
- basic\MyErrorFunc;
- basic\Hmg_Error_2.


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1876
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.06.21 10:29. Заголовок: Выложил Update 2 для..


Выложил Update 2 для сборки 21.05 по адресу

http://hmgextended.com/files/CONTRIB/hmg-21.05-setup.exe

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3756
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.06.21 10:46. Заголовок: gfilatov2002 пишет С..


gfilatov2002 пишет
 цитата:
См. примеры в папках:


Спасибо
Примеры видел, но не вдохновили. Заменой prg (полученный new obj), показалось удобнее в использовании.
Предложил блок кода для более гибких вариантов, подменой на лету, если кому надо комбинировать html\txt\...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3760
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.06.21 12:05. Заголовок: gfilatov2002 Неболь..


gfilatov2002
Небольшая добавка
 
METHOD SetArrayTo( aArray, uFontHF, aHead, aSizes, uFooter, aPicture, aAlign, aName ) CLASS TSBrowse
...
FOR nI := 1 TO Len( ::aArray )
FOR nN := 1 TO nColumns
If HB_ISCHAR( ::aArray[ nI, nN ] ) .and. CRLF $ ::aArray[ nI, nN ]
cData := ""
AEval(hb_aTokens(::aArray[ nI, nN ], CRLF), {|x| x := trim(x), cData := If( Len(x) > Len(cData), x, cData )})
Else
cData := cValToChar( ::aArray[ nI, nN ] )
EndIf

IF Len( cData ) > Len( aDefMaxVal[ nN ] )
IF aDefType[ nN ] == "C"
aDefMaxVal[ nN ] := Trim( cData )
aDefMaxLen[ nN ] := Max( aDefMaxLen[ nN ], Len( aDefMaxVal[ nN ] ) )
ELSE
aDefMaxVal[ nN ] := cData
aDefMaxLen[ nN ] := Max( aDefMaxLen[ nN ], Len( cData ) )
ENDIF
ENDIF
NEXT
NEXT
...


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1877
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.06.21 13:03. Заголовок: SergKis пишет: Небо..


SergKis пишет:

 цитата:
Небольшая добавка


Принято.
Благодарю за помощь

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3761
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.06.21 14:45. Заголовок: gfilatov2002 Надо е..


gfilatov2002
Надо еще поправить, т.к. aDefMaxLen[ nI ] помешает расчету
 
METHOD SetArrayTo( aArray, uFontHF, aHead, aSizes, uFooter, aPicture, aAlign, aName ) CLASS TSBrowse
... line 12950
FOR nI := 1 TO nColumns
cType := ValType( ::aArray[ 1, nI ] )
aDefType[ nI ] := cType

IF cType $ "CM"
::aDefValue[ nI ] := Space( Len( ::aArray[ 1, nI ] ) )
aDefMaxVal[ nI ] := Trim( ::aArray[ 1, nI ] )
aDefMaxLen[ nI ] := iif( CRLF $ aDefMaxVal[ nI ], 0, Len( aDefMaxVal[ nI ] ) )

aDefAlign[ nI ] := DT_LEFT
...


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1878
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.06.21 15:10. Заголовок: SergKis пишет: Надо..


SergKis пишет:

 цитата:
Надо еще поправить


OK

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1879
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.06.21 10:21. Заголовок: Всем кому это интересно


Подготовил 3-й апдейт для сборки 25.05, который выйдет на этой неделе
Что нового:
Скрытый текст

Если у Вас есть полезные дополнения для библиотеки, то я с удовольствием их рассмотрю с целью включения в эту сборку...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1699
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 15.06.21 21:03. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Если у Вас есть полезные дополнения для библиотеки, то я

Григорий, не знаю полезно ли? В одном из проектов делал замену errorsys на вывод лога не в html, а в json. Плюс встроенный вьювер ошибок по этому json. Достаточно компактно кажет всю информацию по ошибке. Потом идею бросил, но там так и работает. Если потребуется, могу в отдельный пример накидать. Так ради альтернативы, поскольку там по сути ничего нового, просто вывод в хтмл заменил на запись в json, и стандартные бровсы по массивам

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1880
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.06.21 21:18. Заголовок: Haz пишет: могу в о..


Haz пишет:

 цитата:
могу в отдельный пример накидать


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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3764
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.06.21 12:21. Заголовок: gfilatov2002 Поправи..


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


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1881
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.06.21 12:34. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Поправить


Принято.
Благодарю за помощь

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 333
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 16.06.21 16:57. Заголовок: В уникодной версии U..


В уникодной версии Upper() только с английским языком работает

msginfo(UPPER('abc абв áéíóú')) -> ABC абв áéíóú

При этом

DEFINE COMBOBOX ...
UPPERCASE .T.
END COMBOBOX

переводит регистр правильно в любом языке из тех, что пробовал.


Раньше, в неуникодной программе, я переводил данные в STR, потом делал Upper, но сейчас

msginfo(HB_STRTOUTF8(UPPER(HB_UTF8TOSTR('abcабв',"RU1251")),"RU1251"))

тоже не работает. Как бы с этим справиться?


В принципе, могу, конечно, написать свою функцию, где условно
'абвгдежзийклмнопрстуфхцчшщъыьэюя' менять на
'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'. Но может есть уже штатные средства?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3766
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.06.21 19:59. Заголовок: rvu пишет В уникодно..


rvu пишет
 цитата:
В уникодной версии Upper() только с английским языком работает


Работает с русским, но с показом списка вопросик.
Пример поправленный BASE\Combo_1 https://TransFiles.ru/jyfhn
список Combo_1 контрола не отобржается, а выбор работает
список Combo_2 контрола работает нормльно


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1882
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.06.21 20:05. Заголовок: rvu пишет: Как бы с..


rvu пишет:

 цитата:
Как бы с этим справиться?


Добавил две новые функции:
- HMG_UPPER(),
- HMG_LOWER().

Результат работы см. на картинке.



Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3768
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.06.21 20:48. Заголовок: gfilatov2002 пишет Д..


gfilatov2002 пишет
 цитата:
Добавил две новые функции:


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

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1883
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.06.21 21:07. Заголовок: SergKis пишет: разв..


SergKis пишет:

 цитата:
разве старые upper() и lower() не должны работать с utf8


Увы, не работают.
Это выглядит, как недоработка в Харборе...

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1884
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.06.21 21:08. Заголовок: SergKis пишет: Если..


SergKis пишет:

 цитата:
Если переносить тексты в unicode версию


Проблема решается с помощью препроцессора

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 334
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 16.06.21 21:42. Заголовок: SergKis пишет: Если..


SergKis пишет:

 цитата:
Если переносить тексты в unicode версию, замучишься править



В редакторе сразу все. Автоматом. Почему нет?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3769
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.06.21 21:47. Заголовок: gfilatov2002 пишет П..


gfilatov2002 пишет
 цитата:
Проблема решается с помощью препроцессора


rvu пишет
 цитата:
В редакторе сразу все. Автоматом. Почему нет?


Это ф-ии hb, они должны работать в UNICODE сборке автоматом, по идее, без костылей иначе смысл такой сборки теряется, тут работает, а здесь нет.
gfilatov2002 пишет
 цитата:
Увы, не работают.
Это выглядит, как недоработка в Харборе...


Получается, что строки надо переводить из utf8 в нужную кодировку работать, как раньше, в однобайтной сборке и опять переводить в utf8 для контролов. Тогда смысл utf8 кодировки теряется, контролы в unicode, а работа в однобайтной схеме вполне хватило бы, переводить строки unicode->ansi->unicode, без utf8

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 336
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 16.06.21 22:53. Заголовок: SergKis пишет: рабо..


SergKis пишет:

 цитата:
работа в однобайтной схеме вполне хватило бы, переводить строки unicode->ansi->unicode, без utf8



Да вот не смогли мы мои хотелки реализовать в своё время. Я тогда очень пытался по вашим советам.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 337
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 17.06.21 08:31. Заголовок: Следующая проблема с..


Следующая проблема с уникодной версией:

msginfo(AT('D','ABCDEF')) -> 4
msginfo(AT('Г','АБВГДЕ')) -> 7

С hb_At() аналогично.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1885
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.06.21 09:31. Заголовок: rvu пишет: С hb_At(..


rvu пишет:

 цитата:
С hb_At() аналогично


Пробуйте функцию hb_UAt()

Также в Харборе есть такие дополнительные функции
hb_ULeft()
hb_URight()
hb_ULen()
и т.д.

Спасибо: 1 
ПрофильЦитата Ответить
moderator




Пост N: 1886
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.06.21 09:40. Заголовок: Всем кому это интересно


Выложил Update 3 для сборки 21.05 с учетом всех последних исправлений и дополнений по адресу

http://hmgextended.com/files/CONTRIB/hmg-21.05-setup.exe

Обновил также UNICODE архив...

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 338
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 17.06.21 09:51. Заголовок: gfilatov2002 , спаси..


gfilatov2002 , спасибо!

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3770
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.06.21 12:18. Заголовок: gfilatov2002 пишет О..


gfilatov2002 пишет
 цитата:
Обновил также UNICODE архив...



Пример выше Combo_1 работает, показывает список развернутый, если поправить имя фонта (в родном hmg примере имя задано неверно) Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1700
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 17.06.21 17:15. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

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



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

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1887
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.06.21 17:46. Заголовок: Haz пишет: собрал н..


Haz пишет:

 цитата:
собрал на скорую


OK
Подход понравился...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1702
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 17.06.21 21:41. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Подход понравился


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

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1703
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 17.06.21 21:41. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Подход понравился


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

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 340
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 18.06.21 05:27. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Пробуйте функцию hb_UAt()

Также в Харборе есть такие дополнительные функции
hb_ULeft()
hb_URight()
hb_ULen()
и т.д.



hb_URAT() нет.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3771
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.06.21 09:11. Заголовок: rvu Небольшой приме..


rvu
Небольшой пример Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 341
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 18.06.21 09:40. Заголовок: SergKis пишет: cF :..


SergKis пишет:

 цитата:
cF := hb_Utf8ToStr("замена", "RU866")



У меня не только русский язык. У меня любой язык.

И собрать свою Rat() легко можно из hb_UAt() и hb_ULen().

Тут важно определиться, что должно быть по определению в уникодной версии. Это пусть Григорий скажет.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3772
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.06.21 10:21. Заголовок: rvu пишет У меня не ..


rvu пишет
 цитата:
У меня не только русский язык. У меня любой язык


Если у вас все базы в utf8, старых вариантов нет и в одном поле присутствуют все языки мира, то ф-ии utf8 в помощь. В др. случаях можно применять и однобайтовые варианты, переводя в utf8 только для контролов

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1888
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 18.06.21 10:30. Заголовок: rvu пишет: важно оп..


rvu пишет:

 цитата:
важно определиться, что должно быть по определению в уникодной версии.


Конечно, опираемся на Unicode-функционал, который есть в Харборе.
Если необходимая реализация отсутствует, то приходится восполнять пробел.

rvu пишет:

 цитата:
hb_URAT() нет.


Эта функция находится в TODO листе Харбора.

rvu пишет:

 цитата:
собрать свою Rat() легко можно из hb_UAt() и hb_ULen().


Значит, надо идти по этому пути, поскольку дальнейшее развитие Харбора в большом тумане...

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 342
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 18.06.21 10:36. Заголовок: SergKis пишет: В д..


SergKis пишет:

 цитата:
В др. случаях можно применять и однобайтовые варианты, переводя в utf8 только для контролов



Я пробовал с русским, писал об этом:

rvu пишет:

 цитата:
msginfo(HB_STRTOUTF8(UPPER(HB_UTF8TOSTR('abcабв',"RU1251")),"RU1251"))



Но и это не вышло. Не знаю почему. Там контролы используются, кроме вывода?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3773
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.06.21 10:44. Заголовок: rvu пишет Но и это н..


rvu пишет
 цитата:
Но и это не вышло


Upper() в unicode переводит ТОЛЬКО английские буквы, потому и не вышло. Другой функционал разделен по именам ф-й.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 343
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 18.06.21 10:46. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Значит, надо идти по этому пути, поскольку дальнейшее развитие Харбора в большом тумане...



А что с его развитием вообще? И что с Минигуи Роберто Лопеса? Как я понял там финальная версия 3.4.3?
Я смотрел англоязычный форум, вроде, какая-то версия 3.4.4. существует, но я ее не смотрел. Она рабочая? Есть смысл ее ставить и смотреть?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 344
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 18.06.21 10:48. Заголовок: SergKis пишет: Uppe..


SergKis пишет:

 цитата:
Upper() в unicode переводит ТОЛЬКО английские буквы, потому и не вышло.



Для любых кодировок? Тогда понятно. Я же переводил в STR.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1889
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 18.06.21 11:07. Заголовок: rvu пишет: что с ег..


rvu пишет:

 цитата:
что с его развитием вообще?


Этого не знает никто, поскольку форум разработчиков Харбора давно молчит.

rvu пишет:

 цитата:
что с Минигуи Роберто Лопеса?


Его никто не поддерживает на постоянной основе.

rvu пишет:

 цитата:
какая-то версия 3.4.4. существует


Уже есть версия 3.5 с минимальными улучшениями.

rvu пишет:

 цитата:
Она рабочая? Есть смысл ее ставить и смотреть?


Да, она рабочая, но, конечно, содержит небольшие ошибки, которые периодически всплывают у пользователей.
Смысл посмотреть всегда есть, а вдруг понравится

Вывод: если не будет мотивации для разработки (материальной и моральной), то судьба любого дела будет под вопросом.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 345
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 18.06.21 11:22. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
собрать свою Rat() легко можно из hb_UAt() и hb_ULen().
Значит, надо идти по этому пути, поскольку дальнейшее развитие Харбора в большом тумане...



Function valRat
Parameters Pr1,Pr2
If hb_UAt(Pr1,Pr2)=0
Return 0
Endif
Return hb_ULen(Pr2)-hb_UAt(Pr1,Pr2)+1

Вы подобные вещи будете у себя включать? Это пустяк, но могут быть посложнее функции. И, наверное, их надо не под зарезервированными именами делать, не hb_URAT(). Так как это имя может потом использоваться в изначальном Харборе.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 346
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 18.06.21 11:27. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Уже есть версия 3.5 с минимальными улучшениями.



А ссылку дадите, чтобы самому не искать?

gfilatov2002 пишет:

 цитата:
если не будет мотивации для разработки (материальной и моральной)



Моральная очень даже есть - пользуемся (ничего, что я за всех?)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3774
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.06.21 11:28. Заголовок: rvu пишет hb_ULen(Pr..


rvu пишет
 цитата:
hb_ULen(Pr2)-hb_UAt(Pr1,Pr2)+1


Это если Pr1 встречается 1 раз, если nn раз ?
Как в примере выше

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 347
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 18.06.21 11:35. Заголовок: SergKis пишет: Это ..


SergKis пишет:

 цитата:
Это если Pr1 встречается 1 раз, если nn раз ?



Ну вот. Я просто ни разу не использовал ее кроме первого вхождения.

Но, кстати, посмотрел Help:

SYNTAX
RAT(<cSearch>, <cTarget>) --> nPosition

ARGUMENTS
<cSearch> is the character string to be located.
<cTarget> is the character string to be searched.

RETURNS

RAT() returns the position of <cSearch> within <cTarget> as an integer numeric value. If <cSearch> is not found, RAT() returns zero.





Вот где точно неправильно! — If <cSearch> is not found, RAT() returns zero.

Добавил:

Function valRat
Parameters Pr1,Pr2
If hb_UAt(Pr1,Pr2)=0
Return 0
Endif
Return hb_ULen(Pr2)-hb_UAt(Pr1,Pr2)+1

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3775
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.06.21 12:05. Заголовок: rvu Зачем городить ..


rvu
Зачем городить огород
Поищите в hb src\* по Alt+F7 в Far *.c "hb_func( hb_U"
посмотрите список найденного, там будет hb_Utf8Rat(...)
Используйте в примере выше
 
? n1, t1
? n2, t2
? "hb_Utf8Rat", hb_Utf8Rat("замена", hb_StrToUtf8(cT, "RU866"))
?


Спасибо: 1 
ПрофильЦитата Ответить
moderator




Пост N: 1890
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 18.06.21 12:07. Заголовок: rvu пишет: ссылку ..


rvu пишет:

 цитата:
ссылку дадите


click here

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 348
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 18.06.21 12:08. Заголовок: SergKis пишет: "..


SergKis пишет:

 цитата:
"hb_Utf8Rat", hb_Utf8Rat("замена", hb_StrToUtf8(cT, "RU866"))



Мне не только русский нужен.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3776
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.06.21 12:12. Заголовок: rvu пишет Мне не тол..


rvu пишет
 цитата:
Мне не только русский нужен.


Вы реально думаете, что ф-ии hb_U...() только для русского языка

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 349
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 18.06.21 12:31. Заголовок: Смутило: hb_StrToUt..


Смутило:


 цитата:
hb_StrToUtf8(cT, "RU866")



А зачем тогда в примере перекодировку писать?

SergKis пишет:

 цитата:
Зачем городить огород



Григорий написал:

gfilatov2002 пишет:

 цитата:
Эта функция находится в TODO листе Харбора.



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3777
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.06.21 12:40. Заголовок: rvu пишет А зачем то..


rvu пишет
 цитата:
А зачем тогда в примере перекодировку писать?


Пример был на показ использования однобайтных ф-ий в теле программы на Utf8 ( SET CODEPAGE TO UNICODE )
Взял, что было под рукой, русский (был еще латышский) текст, думал так будет понятнее.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 350
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 18.06.21 12:56. Заголовок: Поторопился я сказат..


Поторопился я сказать, что все работает. Не туда посмотрел.

Так надо запрашивать? -

msginfo(hb_Utf8Rat('ó','áéíóú')) -> 4

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3778
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.06.21 13:02. Заголовок: rvu Что не так ? &#..


rvu
Что не так ?
áéíóú
-> 4
áéíóú
12345
Ищет с конца, позиция от начала

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 351
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 18.06.21 13:30. Заголовок: SergKis пишет: Что ..


SergKis пишет:

 цитата:
Что не так ?



Извините. Пришел в офис, а тут задергали. Ничего не соображаю. Это у меня всё не так.
Свою хрень себе оставлю, чтобы с конца показывала. Зачем это нужно пока не знаю.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 353
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 18.06.21 14:35. Заголовок: hb_utf8Len() и hb_UL..


hb_utf8Len() и hb_ULen() ничем не отличаются? Остальные аналогичные тоже?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1704
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 22.06.21 15:40. Заголовок: Haz пишет: собрал н..


Haz пишет:

 цитата:
собрал на скорую тест лог ошибок в json . Еще подпилю позже чуть


подпилил чуть
https://drive.google.com/file/d/162KSwaSB5_cdALxvLxTmq3AjEO8VkBfa/view?usp=sharing

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1891
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 22.06.21 16:01. Заголовок: Haz пишет: подпилил..


Haz пишет:

 цитата:
подпилил


Спасибо

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1892
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.06.21 11:55. Заголовок: Всем кому это интересно


Выложил Update 4 для сборки 21.05 с учетом всех последних исправлений и дополнений по адресу

http://hmgextended.com/files/CONTRIB/hmg-21.05-setup.exe

Обновил также UNICODE архив

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3779
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.06.21 13:38. Заголовок: gfilatov2002 Неточн..


gfilatov2002
Неточность (tget) GETBOX при выполнении присваивания не срабатывает ON CHANGE ...
 
METHOD VarPut( xValue, lReFormat ) CLASS Get
...
IF lReFormat
::cType := ValType( xValue )
::xVarGet := xValue
::lEdit := .F.
::Changed := .T.

::Picture := ::cPicture
ENDIF
...

с добавкой работают _SetGetBoxValue(), _SetValue() и SetProperty(..., ..., "Value", ...)
Пример Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1893
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 28.06.21 18:09. Заголовок: SergKis пишет: Нето..


SergKis пишет:

 цитата:
Неточность (tget) GETBOX при выполнении присваивания


Принято
Хотя, возможно, что при переформатировании значения в TGET классе срабатывание события ON CHANGE и не планировалось...
Благодарю за помощь

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3780
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.06.21 18:29. Заголовок: gfilatov2002 пишет Х..


gfilatov2002 пишет
 цитата:
Хотя, возможно, что при переформатировании значения в TGET классе срабатывание события ON CHANGE и не планировалось...


Согласен, тут есть подводный камень для исп. ф-ии в ON CHANGE ... и после _SetValue() ручное применение той же ф-ии, могут привести к неточностям счетчиков изменений или еще чего то. Но "правильней" после присвоения\изменения данных GETBOX по _SetValue() ON CHANGE ... должен отрабатывать. Конфликт со старой версией ON CHANGE ... возможен.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6973
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.06.21 18:16. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Принято


Григорий, а в текущую версию эта добавка вошла ?
А то я не могу пере собрать minigui.lib, ошибки лезут...
Наверное из-за BCC 5.5

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1894
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.06.21 19:37. Заголовок: Andrey пишет: в тек..


Andrey пишет:

 цитата:
в текущую версию эта добавка вошла ?


Нет, она будет включена в следующую июльскую сборку.

Кстати, подготовил первую бетку этой сборки со следующим списком изменений:
Скрытый текст

Но пока не решил, когда опубликовать новую сборку, потому что ...

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1895
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.06.21 19:43. Заголовок: P.S. Картинка из нов..


P.S. Картинка из новой сборки


и полный текст этого примера ниже:

Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 206
Зарегистрирован: 17.10.05
ссылка на сообщение  Отправлено: 17.07.21 12:51. Заголовок: INVISIBLE BLINK


Заметил одну ситуацию, если в LABEL определяется INVISIBLE BLINK,
то все равно показ идет и Visible == .T.

@ 15,150 LABEL Label_1 VALUE 'Blink Test:' AUTOSIZE INVISIBLE BLINK

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1897
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 21.07.21 09:55. Заголовок: Всем кому это интересно


Выложил июльскую ANSI сборку 21.07 с учетом всех последних наработок по адресу

http://hmgextended.com/files/CONTRIB/hmg-21.07-setup.exe

Также подготовил эту сборку для таких бесплатных Си-компиляторов:

- Embarcadero C++ 7.30 for Win32;

- MinGW 32-bit (GCC with MCF thread model, built by LH_Mouse.) 11.1.1 20210708;

- MinGW 64-bit (MinGW-W64 x86_64-posix-seh, built by Brecht Sanders) 11.1.1 20210710;

- Microsoft Visual C++ 19.29.30037 (32/64-bit).

Рассматриваю эту сборку как финальную

Вот теперь ВСЕ...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3793
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.07.21 10:37. Заголовок: gfilatov2002 unicod..


gfilatov2002
unicode версию сделайте по старому или новому адресу, пробую когда есть время
Спасибо

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1898
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 21.07.21 10:48. Заголовок: SergKis пишет: unic..


SergKis пишет:

 цитата:
unicode версию сделайте


Отправил ссылку в личку

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3794
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.07.21 11:05. Заголовок: gfilatov2002 пишет О..


gfilatov2002 пишет
 цитата:
Отправил ссылку в личку


Спасибо
PS
не успел предложить добавить к System. ... (но вдруг ... )
 
#xtranslate _GetAppCargo () => _HMG_MainCargo

/////////////////////////////////////////////
// System pseudo-properties
/////////////////////////////////////////////

#translate <p:System,Sys>.Cargo => _HMG_MainCargo
#translate <p:System,Sys>.Cargo := <arg> => _HMG_MainCargo := <arg>

#translate System.Clipboard => RetrieveTextFromClipboard()
...

и в др. строках сделать <p:System,Sys>.
коротко писать удобнее, например
 
Sys.Cargo := oKeyData() ; o := Sys.Cargo

o:cUsr := "sysdba"
o:cPsw := "masterkey"
o:cFdb := ""
o:cIP := ""
o:nLang := 2
o:cCur := cmCurDir()+"\"
o:cLog := o:cCur+"ealarm.log"
o:BIN := o:cCur+"BIN"+"\" // доп. прогрммы

LogFileName( o:cLog )

o:WRK := "WRK"
o:HBK := "HBK"
o:BAK := "BAK" // сюда складывть bak копию для gbak.exe (сканируем)
o:FDB := "FDB" // сюда складывть fdb и снимок фйлов с него
o:INI := "HBK\INI"

a := {o:WRK, o:WRK+"\E", o:HBK, o:INI, o:BAK, o:FDB} ; AEval( a, {|cd| DirMake(cd) } )

o:WRK := o:cCur+o:WRK+"\" ; o:HBK := o:cCur+o:HBK+"\" ; o:INI:= o:cCur+o:INI+"\"
o:FDB := o:cCur+o:FDB+"\" ; o:BAK := o:cCur+o:BAK+"\"
... или
LOCAL o := Sys.Cargo

o:oBaseText := oKeyData()

o:oBaseText:aNew := {"Add new", "Jauns" , "Добавить" }
o:oBaseText:aDel := {"Delete" , "Dzēst" , "Удалить" }
o:oBaseText:aRefr := {"Refresh", "Atjaunot" , "Обновить" }
o:oBaseText:aEdit := {"Edit" , "Rediģēt" , "Менять" }
o:oBaseText:aSort := {"Sorting", "Šķirošana", "Сортировка"}
o:oBaseText:aExit := {"Exit" , "Izeja" , "Выход" }
...
LOCAL cForm := 'wListSel', t, o := Sys.Cargo, ot := o:oBaseText
...
BUTTON BtnList CAPTION ot:cList PICTURE 'page_plus' ;
TOOLTIP NIL SEPARATOR ;
ACTION _wPost(1, , This.Name)
BUTTON BtnSort CAPTION ot:cSort PICTURE 'page_123' ;
TOOLTIP NIL SEPARATOR ;
ACTION ( DoEvents(), _wPost(4, oMain:Cargo:cFocused, 0) ) DROPDOWN
...
oCol := :GetColumn("EVENT") ; oCol:cHeading := ot:cEvnt
oCol := :GetColumn("OBJECTNUM"); oCol:cHeading := ot:cObj
oCol := :GetColumn("NAME") ; oCol:nWidth := oCol:ToWidth(50)
oCol:cHeading := ot:cName
oCol := :GetColumn("ADDRESS") ; oCol:nWidth := oCol:ToWidth(50)
oCol:cHeading := ot:cAddr
...


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1899
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 21.07.21 12:32. Заголовок: SergKis пишет: #tr..


SergKis пишет:

 цитата:
#translate <p:System,Sys>.Cargo => _HMG_MainCargo
#translate <p:System,Sys>.Cargo := <arg> => _HMG_MainCargo := <arg>


Добавил в форме

 цитата:

#translate <p:Application,App>.Cargo => _HMG_MainCargo
#translate <p:Application,App>.Cargo := <arg> => _HMG_MainCargo := <arg>


SergKis пишет:

 цитата:
в др. строках сделать <p:System,Sys>


Сделал
Благодарю за помощь

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3807
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.07.21 23:42. Заголовок: gfilatov2002 Сделал..


gfilatov2002
Сделал у себя
 
CLASS TSColumn
...
DATA bDrawCell // before :bTSDrawCell()
...
METHOD DrawLine( xRow, lDrawCell ) CLASS TSBrowse
...
oColumn:oCell:lInvertColor := .F. // 32 Invert color

IF ISBLOCK( oColumn:bDrawCell ) ; Eval( oColumn:bDrawCell, Self, oColumn:oCell, oColumn )
ENDIF

IF lDrawCell ; ::TSDrawCell( oColumn:oCell, oColumn )
ENDIF
...
METHOD DrawSelect( xRow, lDrawCell ) CLASS TSBrowse
...
oColumn:oCell:lInvertColor := !(::lCellBrw .and. nJ != ::nCell) // 32 Invert color

IF HB_ISBLOCK( oColumn:bDrawCell ) ; Eval( oColumn:bDrawCell, Self, oColumn:oCell, oColumn )
ENDIF

If lDrawCell .and. ::lDrawLine ; ::TSDrawCell( oColumn:oCell, oColumn )
EndIf
...
Потребовалось раскрасить код объекта в выборке многострочной по объектам (аналог покраски четных\нечетных строк,
т.е. через строчку), а тут через объект. С использованием :bDrawCell() получилось просто.
...
LOCAL oColor := oKeyData()
LOCAL nMaxObj
... выбираем уникально объекты и ставим 0\1 (чет\нечет)
INDEX ON OBJECTNUM TAG OBJ UNIQUE
OrdSetFocus("OBJ")
GO TOP
nMaxObj := OrdKeyCount() ; i := 0
DO WHILE !EOF() ; oColor:Set( OBJECTNUM, int(i % 2) ) ; i++ ; SKIP
ENDDO
GO TOP
... на колонку кодов объектов в тсб ставим
oCol := :GetColumn("OBJECTNUM"); oCol:cHeading := ot:cObj
oCol:nFAlign := DT_CENTER
oCol:cFooting := hb_ntos(nMaxObj)
oCol:Cargo := oKeyData()
oCol:Cargo:nMaxObj := nMaxObj
oCol:Cargo:oColor := oColor
oCol:Cargo:lColor := nMaxObj > 1
oCol:Cargo:aColor := { GetSysColor( COLOR_BTNFACE ) } // { CLR_HGRAY }
oCol:bDrawCell := {|obrw,ocel,ocol|
Local o := ocol:Cargo, nClr, nTo, cKod, nElm
IF o:lColor
nClr := ocel:nClrBack
nTo := ocel:nClrTo
cKod := ocel:uValue
nElm := o:oColor:Get(cKod, 0)
ocel:nClrBack := iif( nElm > 0, o:aColor[ nElm ], nClr )
ocel:nClrTo := iif( nElm > 0, o:aColor[ nElm ], nTo )
ENDIF
Return Nil
}
...


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1900
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.07.21 09:49. Заголовок: SergKis пишет: Сдел..


SergKis пишет:

 цитата:
Сделал у себя


ОК.
Благодарю за предложение

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1901
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.07.21 09:54. Заголовок: Всем кому это интересно


Подготовил 1-й апдейт сборки 21.07
Подробности см. на английском форуме Минигуи.
Обновил также Unicode архив.

Искренне благодарю Андрея за многолетнюю поддержку

Желаю всем мира и добра

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7013
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.08.21 22:40. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Подробности см. на английском форуме Минигуи.


А нам тоже интересно, на русском, а не на буржуйском.

Когда ТАБ внизу, большие фонты отображаются коряво !
Я не использую такие ТАБы но может другие используют.
И картинки коряво сдвинуты...
Пример отправил на почту.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1902
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 02.08.21 10:26. Заголовок: Andrey пишет: Когда..


Andrey пишет:

 цитата:
Когда ТАБ внизу, большие фонты отображаются коряво


Уже поправил эту недоработку, и "по-тихому" обновил 1-й апдейт сборки 21.07 по адресу

http://hmgextended.com/files/CONTRIB/hmg-21.07-setup.exe

Благодарю за пример

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 356
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 04.08.21 08:52. Заголовок: Компилирую с помощью..


Компилирую с помощью ..\batch\compile.bat

Сегодня заметил, стала говорить про множественные ресурсы:

Duplicate resource: Type 16 (VERSIONINFO), ID 1;
File мой файл ресурсов - .RES resource kept;
file C:\MINIGUI\RESOURCES\MINIGUI.RES resource discarded.

Не знаю как давно это появилось. Вытащил версию 21.05 — нет там такого. Как бы их примирить?

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1903
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.08.21 12:48. Заголовок: rvu пишет: Вытащил ..


rvu пишет:

 цитата:
Вытащил версию 21.05 — нет там такого. Как бы их примирить?


Благодарю за сообщение
Уже поправил эту недоработку, которая была вызвана ошибками в работе компилятора ресурсов Borland C++.

P.S. Поправил также в Unicode-архиве...

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 357
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 04.08.21 16:25. Заголовок: Скачал заново. В uni..


Скачал заново.
В unicode-версии пропало.
А в неуникодной ничего не изменилось. Да и установочный файл такого же размера, что и раньше у меня был.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1904
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.08.21 16:29. Заголовок: rvu пишет: в неуник..


rvu пишет:

 цитата:
в неуникодной ничего не изменилось


Все правильно.
Это исправление будет включено во второй апдейт сборки 21.07

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 358
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 04.08.21 16:39. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Это исправление будет включено во второй апдейт сборки 21.07



Понял. Когда ожидается?

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1905
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.08.21 17:01. Заголовок: rvu пишет: Когда ож..


rvu пишет:

 цитата:
Когда ожидается?


Запланировал - на следующей неделе, если получится...

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 359
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 04.08.21 17:13. Заголовок: Понятно...


Понятно.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1906
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.08.21 10:34. Заголовок: Всем кому это интересно ;-)


Завершена подготовка второго апдейта сборки 21.07, который будет опубликован послезавтра.
Что нового:
Скрытый текст
Ваши комментарии приветствуются...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3808
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.08.21 11:28. Заголовок: gfilatov2002 пишет В..


gfilatov2002 пишет
 цитата:
Ваши комментарии приветствуются...


Пробовал под unicode пример Advanced\7-Zip, ... фокус не удался
Может включить lib из примера в основную сборку ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1907
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.08.21 12:35. Заголовок: SergKis пишет: Може..


SergKis пишет:

 цитата:
Может включить lib из примера в основную сборку ?


Благодарю за предложение, но эта библиотека является устаревшей (с 2010 года).
Ее функционал перенесен в ядро Харбора и в contrib библиотеку XHB.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3809
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.08.21 16:51. Заголовок: gfilatov2002 пишет э..


gfilatov2002 пишет
 цитата:
эта библиотека является устаревшей (с 2010 года).
Ее функционал перенесен в ядро Харбора и в contrib библиотеку XHB.


Как я понял, в hb zip функционал (может ошибаюсь), а с запусками планировщиком (у нас, как правило) синхронизацию по backup
откатам (баз) каталогов разных PC, используют 7z (7za.exe). 7z = ~1Г -> ~65Мб, а zip дает ~ в 2а раза больше файл после сжатия.
Пример оказался очень в тему и жизненный, чуть поправил галочки настройки, добавил Size в grid и получилась автомат. распаковка
7z архива при заданных параметрах File7z, CtlgOut на входе запуска. Пока 7-zip32.dll была хорошим решением

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3811
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.08.21 21:28. Заголовок: gfilatov2002 пишет Е..


gfilatov2002 пишет
 цитата:
Ее функционал перенесен в ядро Харбора и в contrib библиотеку XHB.


Собрал hbdll32.lib на unicode версии, выбросил из своего модуля ранее
 
// Generate the full name of the installed 7-Zip through a registry entry
OPEN REGISTRY oReg KEY HKEY_CURRENT_USER Section 'Software\7-Zip'
GET VALUE cPath7z NAME 'Path' OF oReg
CLOSE REGISTRY oReg

Заработало. Кому интересно, тут Скрытый текст

Запуск для авто распаковки demo2.exe -e <FileName.7z> <FullDirNameUnPack>
Текст помещаем как demo2.prg в Advanced\7-Zip

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3812
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.08.21 10:58. Заголовок: PS Поправил текст, р..


PS
Поправил текст, размеры кнопок, убрал chr(0) из имени файла из архива и при запуске
demo2.exe -e <FileName.7z> <FullDirNameUnPack>
берет все файлы из архива (архив ОБЯЗАТЕЛЬНО без подкаталогов)

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1909
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.08.21 10:18. Заголовок: Всем кому это интересно ;-)


Подготовил 2-й апдейт сборки 21.07

Обновил также Unicode архив.

Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 360
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 12.08.21 14:03. Заголовок: Спасибо!..


Спасибо!

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1916
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 26.08.21 09:41. Заголовок: Всем кому это интересно


Выложил 3-й апдейт сборки 21.07

Добавлены новые интересные функции, выполнена оптимизация использования внутренних STATIC переменных в ядре библиотеки (их количество уменьшилось на треть).

Обновил также Unicode архив.

Желаю всем участникам форума мира и добра

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3844
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.08.21 07:50. Заголовок: gfilatov2002 Если п..


gfilatov2002
Если появилось облако переменных, может есть смысл, внести обработку в Events()
сообщения WM_COPYDATA, т.е. примерно так
 
...
CASE nMsg == WM_COPYDATA .and. _SetGetGlobal("b_WM_COPYDATA") != Nil
// to get data
cData := GetMessageData( lParam, @nDataID )
EVal( _SetGetGlobal("b_WM_COPYDATA"), nDataID, cData )

PS. Почему массив, а не Hash, переменных ведь много можно организовать или для системных переменных завести отдельное пространство переменных

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1917
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 27.08.21 10:02. Заголовок: SergKis пишет: може..


SergKis пишет:

 цитата:
может есть смысл, внести обработку в Events()


Благодарю за предложение, но это, по-моему, излишне.
Хотя, есть над чем подумать...

SergKis пишет:

 цитата:
Почему массив, а не Hash


Так привычнее, поскольку для хранения PUBLIC переменных используется единый массив также.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3845
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.08.21 11:12. Заголовок: gfilatov2002 пишет P..


gfilatov2002 пишет
 цитата:
PUBLIC переменных используется единый массив также.


Это скорее, исторический, минус для hmg, т.к. структура внутри получилась довольно костяная и индивидуальная (описания контролов, где внутренние массивы различаются). Подключение пользовательских обработчиков через
SET EVENTS FUNCTION TO MYEVENTS
решает многое, но требуют знаний.

 цитата:
Так привычнее


Использую оч. давно механизм oKeyData() для решения пространства переменных программы и в реале их бывает оч. много и это с учетом, что на окнах такие данные (глобальные) перекрываются локальными значениями
В Hash ключ можно использовать не только строковые значения, что бывает очень удобно

PS. Пропустил, а удаление переменной есть ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1918
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 27.08.21 11:56. Заголовок: SergKis пишет: а уд..


SergKis пишет:

 цитата:
а удаление переменной есть ?


Нет
Но Вы без труда напишите функцию _DelGlobal()

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3846
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.08.21 12:26. Заголовок: gfilatov2002 пишет Н..


gfilatov2002 пишет
 цитата:
Но Вы без труда напишите функцию _DelGlobal()


Я бы пошел по пути
STATIC _HMG_STATIC := oKeyData() //{}
и уже все было бы через hash, CLASS TKeyData вынес бы за скобку #ifdef _OBJECT_
Код дополнительный для обслуживания _HMG_STATIC написан

PS. CLASS TThrData можно, наверно, удалить. Вряд ли его используют в потоках, а для др. он не нужен

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3847
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.08.21 13:28. Заголовок: PS Ф-я может быть та..


PS
Ф-я может быть такой
 
STATIC _HMG_STATIC := oKeyData()

*-----------------------------------------------------------------------------*
FUNCTION _SetGetGlobal( cVarName, xNewValue )
*-----------------------------------------------------------------------------*
LOCAL xOldValue

IF pCount() == 0
RETURN _HMG_STATIC

ELSEIF pCount() == 1
IF ISCHAR(cVarName) ; cVarName := upper(cVarName)
ENDIF

RETURN _HMG_STATIC:Get(cVarName, NIL)

ELSEIF pCount() == 2
IF ISCHAR(cVarName) ; cVarName := upper(cVarName)
ENDIF

xOldValue := _HMG_STATIC:Get(cVarName, NIL)
IF ISNIL(xNewValue) ; _HMG_STATIC:Del(cVarName)
ELSE ; _HMG_STATIC:Set(cVarName, xNewValue)
ENDIF
ENDIF

RETURN xOldValue

Применять так дополнительно (кроме выше описанных)
aKeys := _SetGetGlobal():Keys() // список всех переменных и ключей
aValues := _SetGetGlobal():Values() // список всех значений
aAll := _SetGetGlobal():GetAll() // массив всех переменных и значений, т.е. {{key, value},...}
и дальше по списку методов класса TKeyData
Для строковых переменных можно работать
os := _SetGetGlobal()
cPath := os:cPathData
os:bMy := {|| ... }
примеры с Cargo есть на эту тему

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1919
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 27.08.21 14:14. Заголовок: SergKis пишет: Ф-я ..


SergKis пишет:

 цитата:
Ф-я может быть такой


Выполнил предложенные изменения для использования хэша и класса TKeyData.
Исправил присвоение
SergKis пишет:

 цитата:
STATIC _HMG_STATIC := oKeyData()


поскольку нельзя присваивать статической переменной возврат функции

ВСЕ РАБОТАЕТ (как описано выше)! БЛАГОДАРЮ ЗА ПОМОЩЬ

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3851
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.08.21 14:01. Заголовок: gfilatov2002 Может ..


gfilatov2002
Может сделать THmgData класс, почистив от лишнего и вернуть TKeyData за скобку ?
Скрытый текст

PS. Можно и метод Destroy() убрать, hb сам справится с очисткой, при завершении работы

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1920
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.08.21 15:35. Заголовок: SergKis пишет: Може..


SergKis пишет:

 цитата:
Может сделать THmgData класс


Принято

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3852
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.08.21 16:05. Заголовок: gfilatov2002 пишет П..


gfilatov2002 пишет
 цитата:
Принято


Допустил неточность в методе Eval(), поправил и выделил цветом


PS. Можно сделать псевдофункции на замену __mvPublic, __mvGet, ... и перенаправить с PUBLIC переменных на hash в переменной, к примеру, _HMG_PUBLIC

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1921
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.08.21 16:36. Заголовок: SergKis пишет: Допу..


SergKis пишет:

 цитата:
Допустил неточность в методе Eval()


Спасибо, исправил.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1922
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 31.08.21 10:31. Заголовок: Всем кому это интересно


Опубликован 4-й апдейт сборки 21.07

Благодарю за помощь Сергея Киселева

P.S. Обновил также Unicode архив.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3855
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.08.21 13:07. Заголовок: Григорий, сделав общ..


Григорий, сделав обще доступной с пользователем область переменных _SetGetGlobal(), не закладывается ли мина пересечения имен ? Может надо разделить, для пользователя _SetGetGlobal(), а для системных вещей, на пример, _SysGlobal()\_HmgGlobal(). По мне стремная ситуация получается с именами сейчас, к примеру
IF _SetGetGlobal( 'lOnChangeEvent' ) == NIL
Я так тоже люблю свои переменные называть.
Или выкинуть из описания для пользователя использование _SetGetGlobal(), можно оставить ф-ю oHmgData() для использования в таком виде
LOCAL oVar := oHmgData()
oVar:cPathData := "\HBK\DATA"
oVar:lShow := .T.
oVar:cTitle := "Bla bla bla"
...

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1923
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 31.08.21 13:14. Заголовок: SergKis пишет: стре..


SergKis пишет:

 цитата:
стремная ситуация получается с именами


Согласен.
Для безопасности добавлю префикс _HMG_ к этим системным переменным

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3856
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.08.21 13:36. Заголовок: gfilatov2002 пишет Д..


gfilatov2002 пишет
 цитата:
Для безопасности добавлю префикс _HMG_ к этим системным переменным


Для безопасности лучше разделить, наверное и списки раздельные, т.е. контроль у каждого за своими переменными нормальный, и по действиям проще, просканировал тексты сейчас, заменил на системное использование и все.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1750
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 03.09.21 15:22. Заголовок: Нужны ли новые методы


Всем привет. нашел у себя в старом проекте. Совсем забыл

Может будет интересно
 

METHOD Show(lShow) CLASS TSBrowse
hb_default(@lShow, .t.)
if lShow
ShowWindow(::hWnd)
else
HideWindow(::hWnd)
end
RETURN nil




Используется для прорисовки в одних координатах разных бровсов в зависимости от условий, примерно так
 
...
oBrw_1:Show( lOk )
oBrw_2:Show( !lOk )
...

В итоге , в зависимости от значения lOk один бровс спрячется, а второй появится
Правда делал через __objAddMethod() чтоб исходники не менять. Но суть та же

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3857
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.09.21 21:22. Заголовок: Haz пишет Правда дел..


Haz пишет
 цитата:
Правда делал через __objAddMethod() чтоб исходники не менять.


В TControl уже есть методы
METHOD Hide() INLINE ShowWindow( ::hWnd, SW_HIDE )
METHOD Show() INLINE ShowWindow( ::hWnd, SW_SHOWNA )
они работают. Т.е. можно писать
iif( lOk, oBrw:Show(), oBrw:Hide() )
Через __objAddMethod() ты просто замещал метод oBrw:Show, наследованный от TControl, своим кодом

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1751
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 03.09.21 21:33. Заголовок: Велосипед


SergKis пишет:

 цитата:
TControl уже есть методы
METHOD Hide() INLINE ShowWindow( ::hWnd, SW_HIDE )


Значит я изобрёл велосипед
Нашёл разгребая архивы, не проверив исходники. Спасибо

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3858
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.09.21 21:53. Заголовок: Haz пишет Значит я и..


Haz пишет
 цитата:
Значит я изобрёл велосипед


Это часто бывает проще, чем разобрать, что где лежит и как работает.
Сам страдаю таким, ну нет времени куда то залезть поглубже , делаешь быстро, что бы работало.
Так что не бери в голову ... со временем все встает на свои места

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3878
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.09.21 17:26. Заголовок: gfilatov2002 Предла..


gfilatov2002
Предлагаю в GetBox для valid исп. вызов со средой This. контрола, т.е.
 
FUNCTION OGETEVENTS( hWnd, nMsg, wParam, lParam )
...
CASE nMsg == WM_INVALID
...
//IF ! Eval( oGet:postblock, oGet )
IF ! Do_ControlEventProcedure ( oGet:postblock, __mvGet( oGet:name ), oGet )
// valid
SetFocus( hWnd )
...

Пример тут Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7055
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.09.21 18:06. Заголовок: SergKis пишет: Func..


SergKis пишет:

 цитата:
Function mySearchString()


Функцию исправить ! Уже есть правильная у Григория.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3879
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.09.21 19:32. Заголовок: Andrey пишет Уже ест..


Andrey пишет
 цитата:
Уже есть правильная у Григория.


Тут другое, блок кода на valid запускается сейчас по Eval(...), что со средой This, неопределенно
предлагаю ... (см. выше). Тогда This среда будет для текущего GETBOX.
В примере, что у тебя ThisWindow.Name попадаем на окно GetBox, но можем и промахнуться, а This.Name им GetBox нет, есть опять имя окна.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1930
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.09.21 20:53. Заголовок: SergKis пишет: Пред..


SergKis пишет:

 цитата:
Предлагаю в GetBox для valid исп. вызов со средой This. контрола


Принято
Благодарю за помощь

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3881
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.09.21 13:53. Заголовок: gfilatov2002 Поправ..


gfilatov2002
Поправил в примере выше bValid(), выделил цветом.
Позволяет тогда без смены времени (в пределах времени tooltip) управлять длительностью сообщения ShowGetValid, т.е. нажав клавишу или клик мышой на getbox (InkeyGui сработает), переключится фокус и сообщение уйдет, потом возвращаем фокус на getbox или сообщение будет держаться пока время InkeyGui не кончится

PS
ShowGetValid имеет 6 вариантов image E,e,I,i,W,w, т.е. тут
ShowGetValid( hGet, This.Name+": Задайте правильно значение времени ! ", 'ОШИБКА '+ThisWindow.Name, 'E' )
Можно использовать CRLF и chr(9) в тексте
ShowGetValid( hGet, This.Name+": Text 1 !"+CRLF+"Text 2"+chr(9)+"ku-ku", 'ИНФОРМАЦИЯ '+ThisWindow.Name, 'i' )

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1931
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.09.21 14:26. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Поправил в примере выше bValid()


Спасибо, теперь работает хорошо

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1708
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 14.09.21 19:42. Заголовок: Andrey пишет: Уже е..


Andrey пишет:

 цитата:
Уже есть правильная у Григория


Судя по RC2 - пока нету..

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1709
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 16.09.21 14:36. Заголовок: Предложения по измен..


Предложения по изменению c_datepicker.c


Скрытый текст


Что нового

Добавлена функция GetDatePickDate()
GetDatePickDate( c ) == hb_Date( GetDatePickYear ( c ), GetDatePickMonth ( c ), GetDatePickDay ( c ) )

SetDatePick в качестве второго аргумента может получать тип Date
SetDatePick(c, Date())

dtp_SetDatetime в качестве второго аргумента может получать тип Date, тогда она работает как SetDatePick()
dtp_SetDatetime(c, Date())

Улучшена совместимость с xHarbour

Также теперь функции SetDatePick(), SetTimePick(), dtp_SetDatetime() в зависимости от того успешно или нет они отработали,
возвращают соответственно .T. или .F.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1932
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.09.21 15:14. Заголовок: Петр пишет: Предлож..


Петр пишет:

 цитата:
Предложения по изменению c_datepicker.c


Узнаю руку мастера
Благодарю за помощь

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1934
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.09.21 10:07. Заголовок: Всем кому это интересно


Опубликована свежая сборка 21.09

Благодарю за помощь Сергея Киселева, Игоря Назарова и Петра Черного

Друзья, без Вашей помощи этот релиз не состоялся бы...

P.S. Обновил также Unicode архив.

P.S. 2 Желаю всем мира и добра

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3882
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.21 14:26. Заголовок: gfilatov2002 Можно ..


gfilatov2002
Можно ссылочку на Unicode архив, старая погибла.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1935
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.09.21 15:16. Заголовок: SergKis пишет: ссыл..


SergKis пишет:

 цитата:
ссылочку на Unicode архив


Отправил в личку

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3883
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.21 16:14. Заголовок: gfilatov2002 Спасибо..


gfilatov2002
Спасибо

PS
Может есть смысл перевести Public &mVar и __mv... ф-ии на аналог _SetGetGlobal(), что то такое
STATIC _HMG_PUBLIC
FUNC _SetGetPublic(...)
...
смотрел на эту тему исходники и файлы ch, должно получиться (окна и контролы, по формируемым именам, вроде укладываются в схему)

В ф-ии _SetGetGlobal() можно убрать
 
IF ISCHAR( cVarName )
cVarName := Upper( cVarName )
ENDIF
т.к. параметр имя проходит через метод :Upp() в нем такое делается, т.к. в :New( lUpper := .T.)


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1936
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.09.21 16:38. Заголовок: SergKis пишет: Може..


SergKis пишет:

 цитата:
Может есть смысл перевести Public &mVar и __mv... ф-ии на аналог _SetGetGlobal(), что то такое
STATIC _HMG_PUBLIC
FUNC _SetGetPublic(...)
...


Я не против, жду ваших предложений
Но смогу ответить/рассмотреть уже только после отпуска, ухожу на две недели

SergKis пишет:

 цитата:
В ф-ии _SetGetGlobal() можно убрать


Убрал, конечно
Благодарю за помощь

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1710
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 17.09.21 20:19. Заголовок: SergKis пишет: Може..


SergKis пишет:

 цитата:
Может есть смысл перевести Public &mVar и __mv... ф-ии на аналог _SetGetGlobal()


И в чем будет ожидаемый профит ?

Убытки в виде потери совместимости и падения производительности - это понятно.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3884
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.21 21:43. Заголовок: Петр пишет Убытки в ..


Петр пишет
 цитата:
Убытки в виде падения производительности


Почему ?
Для public таблица описаний, если не ошибаюсь массив структуированный, а тут Hash

 цитата:
Убытки в виде потери совместимости


Где то нет Hash ?
Сейчас он внутри hmg используется в getbox, TsBrowse, может еще где

 цитата:
И в чем будет ожидаемый профит ?


Уйти на STATIC

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1711
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 17.09.21 22:09. Заголовок: SergKis пишет: Где ..


SergKis пишет:

 цитата:
Где то нет Hash ?
Сейчас он внутри hmg используется в getbox, TsBrowse


Причем здесь Hash. Старый код с ухищрениями в виде прямого доступа к публичным переменным перестанет работать.
А Hash используется там куда его воткнули, к месту или нет, как будто в getbox без Hash обойтись не было возможности.

SergKis пишет:

 цитата:
Уйти на STATIC


Что это даст?

Мне никогда не нравилась "внутренняя" реализация MiniGUI, но по крайней мере она существует не один год в именно в таком виде, как её реализовал Роберто Лопез. У нее есть недостатки, но есть и какая-то концепция. Вот новую концепцию хотелось бы и услышать.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3885
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.21 22:29. Заголовок: Петр пишет Вот новую..


Петр пишет
 цитата:
Вот новую концепцию хотелось бы и услышать.


Как то не собирался концепции разводить. Хочется просто уменьшить ко-во Public переменных в динамической памяти. При всем уважении к реализации сборщика мусора (он хорошо работает), но потери адресов public переменных происходят, так же как это было и VO (Access violation).

 цитата:
как будто в getbox без Hash обойтись не было возможности.


Можно, но с hash удобнее и код проще.

 цитата:
Старый код с ухищрениями в виде прямого доступа к публичным переменным перестанет работать


Вот потому и спросил "Может ...", т.к. пока не встречал примеров на эту тему. Не знаю кто будет организовывать прямой доступ к переменной окна или к переменной контрола для хранения индекса (речь идет только о них), т.е.
 
mVar := '_' + ParentFormName + '_' + ControlName
k := _GetControlFree()
Public &mVar. := k
или
mVar := '_' + FormName
k := AScan ( _HMG_aFormDeleted, .T. )
Public &mVar. := k
и
*-----------------------------------------------------------------------------*
FUNCTION GetControlIndex ( ControlName , ParentForm )
*-----------------------------------------------------------------------------*
LOCAL mVar := '_' + ParentForm + '_' + ControlName

RETURN __mvGetDef ( mVar , 0 )


 цитата:
по крайней мере она существует не один год в именно в таком виде, как её реализовал Роберто Лопез


Огромное САСИБО ему за это, но времени уже много прошло, жизнь идет дальше, возможно и тут надо что то менять

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1712
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 17.09.21 23:09. Заголовок: SergKis пишет: но п..


SergKis пишет:

 цитата:
но потери адресов public переменных происходят


Мне понравился подход Андрея: запретить пользователям пить кофе (курить, есть, пить, спать.. ). Это лучше чем разбираться в причинах падений программы.

SergKis пишет:

 цитата:
Как то не собирался концепции разводить.


Ну ладно.
А как будет выглядеть такой вот код с использованием Hash

_HMG_ActiveFormName := IF( Empty( _HMG_ActiveFormName ), 'Form_1', _HMG_ActiveFormName )
_HMG_BeginWindowActive := .T.
ну или после препроцессора
_HMG_SYSDATA[33] := IF( Empty( _HMG_SYSDATA[33] ), "Form_1", _HMG_SYSDATA[33] )
_HMG_SYSDATA[34] := .T.

без потери производительности и с соблюдением безопасности при mt.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3886
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.21 23:33. Заголовок: Петр пишет А как буд..


Петр пишет
 цитата:
А как будет выглядеть такой вот код с использованием Hash


Так и будет выглядеть, эти define не трогаем, речь идет о ф-ях __mv...
__mvPublic, __mvGet, __mvPut, ... причем для ограниченного применения ТОЛЬКО для переменных от имен form и контрола, которые динамически формируются в момент создания DEFINE ... что то. Это строки
 
mVar := '_' + ParentFormName + '_' + ControlName
k := _GetControlFree()
Public &mVar. := k
или
mVar := '_' + FormName
k := AScan ( _HMG_aFormDeleted, .T. )
Public &mVar. := k
и
*-----------------------------------------------------------------------------*
FUNCTION GetControlIndex ( ControlName , ParentForm )
*-----------------------------------------------------------------------------*
LOCAL mVar := '_' + ParentForm + '_' + ControlName

RETURN __mvGetDef ( mVar , 0 )

тут hash просто напрашивается, по мне

 цитата:
Мне понравился подход Андрея: запретить пользователям пить кофе


Так он и не запрещает. По моей рекомендации убирает из блока кода внешнюю для него public переменную и переводит на внутреннюю полученную через параметр и это место работает. Просто мест, сделанных от стандартного подхода от MiniGui, у него много, вот они начинают сыпаться со временем нарастания программы

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1713
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 18.09.21 00:11. Заголовок: SergKis пишет: Так ..


SergKis пишет:

 цитата:
Так и будет выглядеть, эти define не трогаем, речь идет о ф-ях __mv...
__mvPublic, __mvGet, __mvPut, ... причем для ограниченного применения ТОЛЬКО для переменных от имен form и контрола, которые динамически формируются в момент создания DEFINE ... что то.


Наконец-то дошло. Идея хорошая. Ждем реализацию.
SergKis пишет:

 цитата:
Так он и не запрещает.


Я там забыл смайлик поставить

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3887
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.09.21 08:07. Заголовок: Петр пишет Ждем реал..


Петр пишет
 цитата:
Ждем реализацию.


Надо определиться по именам. Мне в голову лезет такое
 
#xtranslate _SetNameList( <x> , <v> ) => _SetGetNamesList( <x> , <v> )
#xtranslate _GetNameList( <x> ) => _SetGetNamesList( <x> )
#xtranslate _DelNameList( <x> ) => _SetGetNamesList( <x> , NIL , .T. )

*-----------------------------------------------------------------------------*
FUNCTION _SetGetNamesList( cVarName, xNewValue, lDelete )
*-----------------------------------------------------------------------------*
STATIC _HMG_NAMESLIST

IF HB_ISNIL( _HMG_NAMESLIST )
_HMG_NAMESLIST := oHmgData()
ENDIF

IF PCount() == 1

RETURN _HMG_NAMESLIST:Get( cVarName, 0 )

ELSEIF PCount() == 2

_HMG_NAMESLIST:Set( cVarName, xNewValue )

ELSEIF PCount() == 3

IF lDelete ; _HMG_NAMESLIST:Del( cVarName )
ELSE ; _HMG_NAMESLIST:Set( cVarName, NIL )
ENDIF

ENDIF

RETURN _HMG_NAMESLIST


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1714
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 18.09.21 10:13. Заголовок: SergKis пишет: Надо..


SergKis пишет:

 цитата:
Надо определиться по именам.



cVarName вроде уже как не cVarName, а cNewName d в случае Set или просто cName в других.
А вот чего это Name

FormsAndControlsNamesList или FCNamesList или ListOfFormsAndControlsNames или просто NamesList

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3891
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.09.21 10:36. Заголовок: Петр пишет cVarName ..


Петр пишет
 цитата:
cVarName вроде уже как не cVarName


тогда может так
FUNCTION _SetGetNamesList( cName, nIndex, lDelete )

 цитата:
просто NamesList


С этого начал, но в hmg сложились такие названия
_SetGetGlobal, _SetGetCargo, может еще есть не помню
пошел по этому пути в наименовании, а FormsAndControlsNamesList уж очень длинно прочитать, а выговорить вслух

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 224 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 248
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет