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




Пост 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 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


gfilatov2002
moderator




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


SergKis пишет:

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


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

SergKis пишет:

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


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

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




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


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


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

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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


gfilatov2002 пишет:

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


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

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




Пост 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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
SergKis
постоянный участник




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


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



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

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




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


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


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

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

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




Пост 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 
Профиль
SergKis
постоянный участник




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


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

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




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


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


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




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


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

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




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


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

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




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


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

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




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


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


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

SergKis пишет:

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


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

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




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


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


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

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




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


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


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

 цитата:
REQUEST HB_LANG_LV




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




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


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


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

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




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


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

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




Пост 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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
SergKis
постоянный участник




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


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

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




Пост 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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
SergKis
постоянный участник




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


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


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




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


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


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

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




Пост 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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


OK

SergKis пишет:

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


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

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

Спасибо: 0 
Профиль
gfilatov2002
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 
Профиль
SergKis
постоянный участник




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


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

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


Спасибо: 0 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


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

Спасибо: 0 
Профиль
gfilatov2002
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 
Профиль
Andrey
постоянный участник




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


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


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

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

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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


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

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

Спасибо: 1 
Профиль
krutoff





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


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

Спасибо: 0 
Профиль
rvu





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


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

HB_STRTOUTF8(ALLTRIM(BASECONFIG->NAME2))

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

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

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

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

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




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


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

Спасибо: 0 
Профиль
rvu





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


SergKis

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

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

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




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


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

Спасибо: 1 
Профиль
rvu





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


SergKis

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

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

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




Пост 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 
Профиль
rvu





Пост 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 
Профиль
SergKis
постоянный участник




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


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

Спасибо: 0 
Профиль
Dima
администратор




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


rvu пишет:

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


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

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




Пост 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 
Профиль
rvu





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


Dima пишет:

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



SergKis пишет:

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



Да, 0.

Спасибо: 0 
Профиль
Dima
администратор




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


SergKis пишет:

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


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

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




Пост 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 
Профиль
SergKis
постоянный участник




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


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


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




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


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


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

Спасибо: 0 
Профиль
gfilatov2002
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 
Профиль
SergKis
постоянный участник




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


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


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

Спасибо: 0 
Профиль
rvu





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


gfilatov2002

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

Спасибо: 0 
Профиль
rvu





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


gfilatov2002 пишет:

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



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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


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

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




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


gfilatov2002
Спасибо

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




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


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

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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


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

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

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




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


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


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

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

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

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




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


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


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

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



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




Пост 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 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


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

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




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


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


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


Dima пишет:

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


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

Спасибо: 1 
Профиль
rvu





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


gfilatov2002 пишет:

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



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

Спасибо: 0 
Профиль
rvu





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


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

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




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


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

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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


Andrey пишет:

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


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

Спасибо: 0 
Профиль
gfilatov2002
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 
Профиль
i3t4j6



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


gfilatov2002 пишет:

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


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


i3t4j6 пишет:

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


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

Спасибо: 0 
Профиль
i3t4j6



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


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


i3t4j6 пишет:

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


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

Спасибо: 0 
Профиль
Haz
администратор




Пост 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 
Профиль
Andrey
постоянный участник




Пост 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 
Профиль
Haz
администратор




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


Andrey пишет:

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


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

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

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

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




Пост 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 
Профиль
Haz
администратор




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


Andrey пишет:

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


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

Andrey пишет:

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


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

Andrey пишет:

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


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

Спасибо: 0 
Профиль
i3t4j6



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


Haz пишет:

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


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


i3t4j6 пишет:

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


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

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


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

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




Пост 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 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


Сергей!

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

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




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


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


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


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


Спасибо: 0 
Профиль
gfilatov2002
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 
Профиль
SergKis
постоянный участник




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


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


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

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




Пост 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 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


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

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




Пост 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 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


OK

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


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

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

Спасибо: 0 
Профиль
Haz
администратор




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


gfilatov2002 пишет:

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

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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


Haz пишет:

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


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

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




Пост 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 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


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

Спасибо: 0 
Профиль
rvu





Пост 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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
gfilatov2002
moderator




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


rvu пишет:

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


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

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



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




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


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


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


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

Спасибо: 0 
Профиль
rvu





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


SergKis пишет:

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



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

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




Пост 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 
Профиль
rvu





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


SergKis пишет:

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



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

Спасибо: 0 
Профиль
rvu





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


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

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

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

Спасибо: 0 
Профиль
gfilatov2002
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 
Профиль
gfilatov2002
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 
Профиль
rvu





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


gfilatov2002 , спасибо!

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




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


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



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


Спасибо: 0 
Профиль
Haz
администратор




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


gfilatov2002 пишет:

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



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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


Haz пишет:

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


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

Спасибо: 0 
Профиль
Haz
администратор




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


gfilatov2002 пишет:

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


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

Спасибо: 0 
Профиль
Haz
администратор




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


gfilatov2002 пишет:

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


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

Спасибо: 0 
Профиль
rvu





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


gfilatov2002 пишет:

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

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



hb_URAT() нет.

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




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


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


Спасибо: 0 
Профиль
rvu





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


SergKis пишет:

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



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

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

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

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




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


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


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

Спасибо: 0 
Профиль
gfilatov2002
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 
Профиль
rvu





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


SergKis пишет:

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



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

rvu пишет:

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



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

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




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


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


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

Спасибо: 0 
Профиль
rvu





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


gfilatov2002 пишет:

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



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

Спасибо: 0 
Профиль
rvu





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


SergKis пишет:

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



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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


rvu пишет:

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


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

rvu пишет:

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


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

rvu пишет:

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


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

rvu пишет:

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


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

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

Спасибо: 0 
Профиль
rvu





Пост 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 
Профиль
rvu





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


gfilatov2002 пишет:

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



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

gfilatov2002 пишет:

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



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

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




Пост 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 
Профиль
rvu





Пост 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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
gfilatov2002
moderator




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


rvu пишет:

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


click here

Спасибо: 0 
Профиль
rvu





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


SergKis пишет:

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



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

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




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


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


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

Спасибо: 0 
Профиль
rvu





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


Смутило:


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



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

SergKis пишет:

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



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

gfilatov2002 пишет:

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



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




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


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


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

Спасибо: 0 
Профиль
rvu





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


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

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

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

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




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


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

Спасибо: 0 
Профиль
rvu





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


SergKis пишет:

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



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

Спасибо: 0 
Профиль
rvu





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


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

Спасибо: 0 
Профиль
Haz
администратор




Пост 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 
Профиль
gfilatov2002
moderator




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


Haz пишет:

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


Спасибо

Спасибо: 0 
Профиль
gfilatov2002
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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


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

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




Пост 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 
Профиль
Andrey
постоянный участник




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


gfilatov2002 пишет:

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


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


Andrey пишет:

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


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

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

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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


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


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

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


Спасибо: 0 
Профиль
krutoff





Пост 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 
Профиль
gfilatov2002
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 
Профиль
SergKis
постоянный участник




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


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


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

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




Пост 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 
Профиль
gfilatov2002
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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


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

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

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

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




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


gfilatov2002 пишет:

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


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

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

Спасибо: 0 
Профиль
gfilatov2002
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 
Профиль
rvu





Пост 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 
Профиль
gfilatov2002
moderator




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


rvu пишет:

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


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

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

Спасибо: 0 
Профиль
rvu





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


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


rvu пишет:

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


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

Спасибо: 0 
Профиль
rvu





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


gfilatov2002 пишет:

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



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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


rvu пишет:

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


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

Спасибо: 0 
Профиль
rvu





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


Понятно.

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


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

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




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


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


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


Благодарю за предложение, но эта библиотека является устаревшей (с 2010 года).
Ее функционал перенесен в ядро Харбора и в contrib библиотеку XHB.

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




Пост 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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
SergKis
постоянный участник




Пост N: 3812
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.08.21 10:58. Заголовок: PS Поправил текст, р..


PS
Поправил текст, размеры кнопок, убрал chr(0) из имени файла из архива и при запуске
demo2.exe -e <FileName.7z> <FullDirNameUnPack>
берет все файлы из архива (архив ОБЯЗАТЕЛЬНО без подкаталогов)

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


Подготовил 2-й апдейт сборки 21.07

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

Спасибо: 1 
Профиль
rvu





Пост N: 360
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 12.08.21 14:03. Заголовок: Спасибо!..


Спасибо!

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


Выложил 3-й апдейт сборки 21.07

Добавлены новые интересные функции, выполнена оптимизация использования внутренних STATIC переменных в ядре библиотеки (их количество уменьшилось на треть).

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

Желаю всем участникам форума мира и добра

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




Пост 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 
Профиль
gfilatov2002
moderator




Пост N: 1917
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 27.08.21 10:02. Заголовок: SergKis пишет: може..


SergKis пишет:

 цитата:
может есть смысл, внести обработку в Events()


Благодарю за предложение, но это, по-моему, излишне.
Хотя, есть над чем подумать...

SergKis пишет:

 цитата:
Почему массив, а не Hash


Так привычнее, поскольку для хранения PUBLIC переменных используется единый массив также.

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




Пост N: 3845
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.08.21 11:12. Заголовок: gfilatov2002 пишет P..


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


Это скорее, исторический, минус для hmg, т.к. структура внутри получилась довольно костяная и индивидуальная (описания контролов, где внутренние массивы различаются). Подключение пользовательских обработчиков через
SET EVENTS FUNCTION TO MYEVENTS
решает многое, но требуют знаний.

 цитата:
Так привычнее


Использую оч. давно механизм oKeyData() для решения пространства переменных программы и в реале их бывает оч. много и это с учетом, что на окнах такие данные (глобальные) перекрываются локальными значениями
В Hash ключ можно использовать не только строковые значения, что бывает очень удобно

PS. Пропустил, а удаление переменной есть ?

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1918
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 27.08.21 11:56. Заголовок: SergKis пишет: а уд..


SergKis пишет:

 цитата:
а удаление переменной есть ?


Нет
Но Вы без труда напишите функцию _DelGlobal()

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




Пост 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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
gfilatov2002
moderator




Пост N: 1919
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 27.08.21 14:14. Заголовок: SergKis пишет: Ф-я ..


SergKis пишет:

 цитата:
Ф-я может быть такой


Выполнил предложенные изменения для использования хэша и класса TKeyData.
Исправил присвоение
SergKis пишет:

 цитата:
STATIC _HMG_STATIC := oKeyData()


поскольку нельзя присваивать статической переменной возврат функции

ВСЕ РАБОТАЕТ (как описано выше)! БЛАГОДАРЮ ЗА ПОМОЩЬ

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




Пост N: 3851
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.08.21 14:01. Заголовок: gfilatov2002 Может ..


gfilatov2002
Может сделать THmgData класс, почистив от лишнего и вернуть TKeyData за скобку ?
Скрытый текст

PS. Можно и метод Destroy() убрать, hb сам справится с очисткой, при завершении работы

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

 цитата:
Может сделать THmgData класс


Принято

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




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


gfilatov2002 пишет
 цитата:
Принято


Допустил неточность в методе Eval(), поправил и выделил цветом


PS. Можно сделать псевдофункции на замену __mvPublic, __mvGet, ... и перенаправить с PUBLIC переменных на hash в переменной, к примеру, _HMG_PUBLIC

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1921
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.08.21 16:36. Заголовок: SergKis пишет: Допу..


SergKis пишет:

 цитата:
Допустил неточность в методе Eval()


Спасибо, исправил.

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


Опубликован 4-й апдейт сборки 21.07

Благодарю за помощь Сергея Киселева

P.S. Обновил также Unicode архив.

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




Пост 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 
Профиль
gfilatov2002
moderator




Пост N: 1923
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 31.08.21 13:14. Заголовок: SergKis пишет: стре..


SergKis пишет:

 цитата:
стремная ситуация получается с именами


Согласен.
Для безопасности добавлю префикс _HMG_ к этим системным переменным

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




Пост N: 3856
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.08.21 13:36. Заголовок: gfilatov2002 пишет Д..


gfilatov2002 пишет
 цитата:
Для безопасности добавлю префикс _HMG_ к этим системным переменным


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

Спасибо: 0 
Профиль
Haz
администратор




Пост 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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
Haz
администратор




Пост N: 1751
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 03.09.21 21:33. Заголовок: Велосипед


SergKis пишет:

 цитата:
TControl уже есть методы
METHOD Hide() INLINE ShowWindow( ::hWnd, SW_HIDE )


Значит я изобрёл велосипед
Нашёл разгребая архивы, не проверив исходники. Спасибо

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




Пост N: 3858
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.09.21 21:53. Заголовок: Haz пишет Значит я и..


Haz пишет
 цитата:
Значит я изобрёл велосипед


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

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




Пост 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 
Профиль
Andrey
постоянный участник




Пост N: 7055
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.09.21 18:06. Заголовок: SergKis пишет: Func..


SergKis пишет:

 цитата:
Function mySearchString()


Функцию исправить ! Уже есть правильная у Григория.

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




Пост N: 3879
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.09.21 19:32. Заголовок: Andrey пишет Уже ест..


Andrey пишет
 цитата:
Уже есть правильная у Григория.


Тут другое, блок кода на valid запускается сейчас по Eval(...), что со средой This, неопределенно
предлагаю ... (см. выше). Тогда This среда будет для текущего GETBOX.
В примере, что у тебя ThisWindow.Name попадаем на окно GetBox, но можем и промахнуться, а This.Name им GetBox нет, есть опять имя окна.

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1930
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.09.21 20:53. Заголовок: SergKis пишет: Пред..


SergKis пишет:

 цитата:
Предлагаю в GetBox для valid исп. вызов со средой This. контрола


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

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




Пост 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 
Профиль
gfilatov2002
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 
Профиль
gfilatov2002
moderator




Пост N: 1932
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.09.21 15:14. Заголовок: Петр пишет: Предлож..


Петр пишет:

 цитата:
Предложения по изменению c_datepicker.c


Узнаю руку мастера
Благодарю за помощь

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


Опубликована свежая сборка 21.09

Благодарю за помощь Сергея Киселева, Игоря Назарова и Петра Черного

Друзья, без Вашей помощи этот релиз не состоялся бы...

P.S. Обновил также Unicode архив.

P.S. 2 Желаю всем мира и добра

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




Пост N: 3882
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.21 14:26. Заголовок: gfilatov2002 Можно ..


gfilatov2002
Можно ссылочку на Unicode архив, старая погибла.

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1935
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.09.21 15:16. Заголовок: SergKis пишет: ссыл..


SergKis пишет:

 цитата:
ссылочку на Unicode архив


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

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




Пост 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 
Профиль
gfilatov2002
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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
SergKis
постоянный участник




Пост 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 
Профиль
SergKis
постоянный участник




Пост N: 3891
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.09.21 10:36. Заголовок: Петр пишет cVarName ..


Петр пишет
 цитата:
cVarName вроде уже как не cVarName


тогда может так
FUNCTION _SetGetNamesList( cName, nIndex, lDelete )

 цитата:
просто NamesList


С этого начал, но в hmg сложились такие названия
_SetGetGlobal, _SetGetCargo, может еще есть не помню
пошел по этому пути в наименовании, а FormsAndControlsNamesList уж очень длинно прочитать, а выговорить вслух

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1937
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.10.21 15:18. Заголовок: Всем кому это интересно ;-)


Петр пишет:

 цитата:
Идея хорошая. Ждем реализацию.


Подготовил первый релиз-кандидат для новой сборки 21.10 с учетом обсуждения выше
Кратко, что нового
Скрытый текст

Благодарю за помощь и ваше внимание к этому проекту

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




Пост N: 3919
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.10.21 10:33. Заголовок: gfilatov2002 Предло..


gfilatov2002
Предложение поправить
 
CLASS TControl
...
METHOD SuperKeyDown( nKey, nFlags, xObj )
...
METHOD SuperKeyDown( nKey, nFlags, xObj ) CLASS TControl
...
if ::bKeyDown != nil
return Eval( ::bKeyDown, nKey, nFlags, xObj )
endif
...
METHOD KeyDown( nKey, nFlags ) CLASS TSBrowse
...
CASE ::lIgnoreKey( nKey, nFlags ) // has to go before any other case statement
::SuperKeyDown( nKey, nFlags, Self )
...
ELSEIF ::lCellBrw .AND. ( nKey == VK_COPY .OR. nKey == VK_INSERT )
uTemp := cValToChar( ::bDataEval( ::aColumns[ nCol ] ) )
CopyToClipboard( uTemp )
SysRefresh()
ELSE
::SuperKeyDown( nKey, nFlags, Self )
ENDIF
...
ELSE
::SuperKeyDown( nKey, nFlags, Self )
ENDIF

CASE nKey == VK_HOME
...
OTHERWISE
::SuperKeyDown( nKey, nFlags, Self )
ENDCASE

RETURN 0
...
METHOD New( cControlName, nRow, nCol, nWidth, nHeight, bLine, aHeaders, aColSizes, cParentWnd, ; // CLASS TSBrowse
...
IF HB_ISARRAY(aHeaders) .and. Len(aHeaders) > 0 .and. aHeaders[1] == NIL
aHeaders := NIL
ENDIF

IF HB_ISARRAY(aColSel) .and. Len(aColSel) > 0 .and. aColSel[1] == NIL
aColSel := NIL
ENDIF

IF aColors != NIL
...

тогда можно делать
DEFINE TBROWSE Street OBJ oBrw AT nYBrw, nXBrw ALIAS cAls WIDTH nWBrw HEIGHT nHBrw ;
HEADERS aHeader ;
COLORS aColors ;
BACKCOLOR aBrwBC ;
JUSTIFY aAlign ;
SELECTOR lSelector ;
FONT aFont ;
COLUMNS aField ;
NAMES aNames ;
FOOTERS aFooter ;
LOADFIELDS ;
EMPTYVALUE ;
GOTFOCUSSELECT ;
ON INIT {|ob| Tsb_Init( ob ) } ;
задавая как массив или NIL (сейчас NIL не проходит)
aHeader
aField
и задавать объект тсб в блоке кода (сейчас его нет)
:bKeyDown := { |nKey,nFalgs,ob| myKeyAction(nKey, 0, nFalgs, ob) }
и делать
STATIC FUNCTION myKeyAction( nKey, nValButton, nFlags, oBrw)
// static\public переменная oBrw_Street не нужна LOCAL oBrw := oBrw_Street
LOCAL cForm, cAlias, cSearch, lRet := .T.
DEFAULT nValButton := 0, nFlags := 0

IF ! ISOBJECT(oBrw) ; RETURN .F.
ENDIF

cForm := oBrw:cParentWnd
cAlias := oBrw:cAlias
...


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1938
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.10.21 16:54. Заголовок: SergKis пишет: Пред..


SergKis пишет:

 цитата:
Предложение поправить


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

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1787
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.10.21 17:50. Заголовок: Хотел последнюю версию скачать ....


Хотел последнюю версию скачать .... на рабочий комп , по привычке набрал http://hmgextended.com/files/CONTRIB
а там теперь живет
 
Forbidden
You don't have permission to access this resource.

Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.

что то поменялось ? или это конец ?

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 7460
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.10.21 18:40. Заголовок: Haz так вот она htt..

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1788
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.10.21 18:46. Заголовок: Dima пишет: так вот..


Dima пишет:

 цитата:
так вот она

а без указания конкретного релиза никак ? Список не посмотреть?

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




Пост N: 3920
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.10.21 19:17. Заголовок: Haz Может так пойде..


Haz
Может так пойдет http://hmgextended.com/

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 7461
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.10.21 19:46. Заголовок: Haz пишет: а без ук..


Haz пишет:

 цитата:
а без указания конкретного релиза никак ? Список не посмотреть?


Можно через ж...
http://web.archive.org/web/20210314190309/http://hmgextended.com/files/CONTRIB/

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1789
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.10.21 19:53. Заголовок: Dima пишет: Можно ч..


Dima пишет:

 цитата:
Можно через ж...

через ж... у меня Тоже не работает.

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1790
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.10.21 19:56. Заголовок: SergKis пишет: Може..


SergKis пишет:

 цитата:
Может так пойдет


Так по ссылке на HMG пишет сайт не найден.💀

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




Пост N: 3921
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.10.21 20:23. Заголовок: Haz пишет Так по ссы..


Haz пишет
 цитата:
Так по ссылке на HMG пишет сайт не найден.


повторно вошел по адресу и скачал по ссылке
http://hmgextended.com/files/CONTRIB/hmg-21.09-setup.exe

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1791
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.10.21 20:36. Заголовок: SergKis пишет: повт..


SergKis пишет:

 цитата:
повторно вошел по адресу и скачал по ссылке

скинь ссылку на список. Где все версии как раньше . У меня не работает

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




Пост N: 3922
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.10.21 20:46. Заголовок: Haz Архивные не дос..


Haz
Архивные не доступны через сайт

Какую надо, у мня есть, могу на ftp положить

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 7462
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.10.21 20:48. Заголовок: Haz пишет: через ж...


Haz пишет:

 цитата:
через ж... у меня Тоже не работает


Да ладно
Список конечно не весь , но всё же и потом как именуются файлы тоже понятно.


Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1792
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.10.21 20:59. Заголовок: SergKis пишет: Архи..


SergKis пишет:

 цитата:
Архивные не доступны через сайт


Понятно.
Я просто не всегда форум отслеживаю . если где требовалось пересобрать проект. Просто дергал bcc и HMG с сайта. Исходники есть у клиента. Теперь придётся и свою версию hmg в облаках держать на случай работы в полях. Плюс иногда на новой версии старый проект не собрать и из-за мелкой правки пол дня переделывать придётся

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1793
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.10.21 21:03. Заголовок: Dima пишет: Да ладн..


Dima пишет:

 цитата:
Да ладно
Список конечно не весь

да так работает
Но последних там не будет скорее всего

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 7463
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.10.21 21:15. Заголовок: Haz пишет: Но после..


Haz пишет:

 цитата:
Но последних там не будет скорее всего


Dima пишет:

 цитата:
и потом как именуются файлы тоже понятно.


http://hmgextended.com/files/CONTRIB/hmg-21.09-setup.exe
http://hmgextended.com/files/CONTRIB/hmg-21.08-setup.exe
http://hmgextended.com/files/CONTRIB/hmg-21.07-setup.exe
http://hmgextended.com/files/CONTRIB/hmg-21.06-setup.exe
и тд и тп :)

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


Опубликована новая сборка 21.10

Благодарю за помощь Сергея Киселева

Желаю всем доброго здоровья и успеха в делах

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




Пост N: 7096
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.10.21 10:16. Заголовок: Пере собрал нескольк..


Пере собрал несколько своих программ. Полёт нормальный ! Спасибо !

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1940
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 27.10.21 09:44. Заголовок: Всем кому это интересно ;-)


Выложил 1-й апдейт сборки 21.10

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

Благодарю за помощь Андрея Верченко

Желаю всем участникам форума мира и добра

Спасибо: 0 
Профиль
imar2



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 28.10.21 08:36. Заголовок: Здравствуйте. Прошу ..


Здравствуйте. Прошу помощи по HMG MiniGUI.

У меня консольное приложение (переведено с Clipper'а).

Почему-то HMG после версии 21.05 поля GET'ов на экране выделяет двоеточиями в начале и конце.

Как это можно убрать и можно ли?

Спасибо.

Спасибо: 0 
gfilatov2002
moderator




Пост N: 1941
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 28.10.21 09:59. Заголовок: imar2 пишет: Как эт..


imar2 пишет:

 цитата:
Как это можно убрать



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


 цитата:
Set( _SET_DELIMITERS, .F. )




Спасибо: 0 
Профиль
imar2



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 28.10.21 10:07. Заголовок: gfilatov2002, большо..


gfilatov2002, большое спасибо. Все стало ОК.

Спасибо: 0 
gfilatov2002
moderator




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


Выложил срочное обновление сборки 21.10 из-за обнаруженной досадной опечатки в коде
по адресу:

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

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


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




Пост N: 3926
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.10.21 13:55. Заголовок: gfilatov2002 пишет В..


gfilatov2002 пишет
 цитата:
Выложил срочное обновление сборки 21.10


к unicode сборке это относится ?

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1943
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.10.21 14:52. Заголовок: SergKis пишет: к un..


SergKis пишет:

 цитата:
к unicode сборке это относится ?


Да, уже обновил unicode сборку тоже.
Благодарю за напоминание

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




Пост N: 3927
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.10.21 18:07. Заголовок: gfilatov2002 пишет у..


gfilatov2002 пишет
 цитата:
уже обновил unicode сборку тоже


получаю архив 21.10 unicode, но в нем все от 26.10.21 числа, в лучшем случае

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1944
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.10.21 19:34. Заголовок: SergKis пишет: полу..


SergKis пишет:

 цитата:
получаю архив 21.10 unicode


Только что проверил этот архив путем скачивания, там все в порядке.
Возможно, вам стоит почистить кэш браузера

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


Снова обновил сборку 21.10 из-за обнаруженной недоработки после введения в ядро глобального хэша по адресу:

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

Также выложил свежий unicode-архив для этой сборки

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




Пост N: 7113
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.11.21 13:41. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Выложил срочное обновление сборки 21.10 из-за обнаруженной досадной опечатки в коде


Перекомпилировал свою большую прогу.
Теперь вылетает...
Создаю на окне
          DEFINE TBROWSE oBrwList                               ; 
.....
FONT aTsbFont ;
BACKCOLOR aBackColor2 ;
GRID ; // это oBrw:lCellBrw := TRUE
EDIT // все колонки с lEdit := .T.

END TBROWSE
CreateBrowseAbonTxt('oBrwList', ....)
END WINDOW

CENTER WINDOW Form_AbLst
ACTIVATE WINDOW Form_AbLst

_hmg_InplaceParentHandle := hParent
DoMethod(cWnd, 'SetFocus')
IF ! empty(cFocus)
DoMethod(cWnd, cFocus, 'SetFocus')
ENDIF

RETURN NIL
....
STATIC FUNCTION CreateBrowseAbonTxt(cTbrName,....)
....
// создаём таблицу из массива
oBrwA := SetArrayTo( cTbrName, cForm, aArray, aFontHF, aHead, aFSize,;
aFoot, aPict, aAlign, aName )
.....
MG_Debug(cTbrName,oBrwA:cControlName) // в лог выдаёт -> oBrwList oBrwList

// по правой кнопки мышки - контекстное меню TBROWSE
DEFINE CONTEXT MENU CONTROL &cTbrName
.....

Ошибка при работе проги:
Error MGERROR/0  Form  is not defined. Program terminated. 

Called from MSGMINIGUIERROR(0)
Called from GETFORMHANDLE(0)
Called from _DEFINECONTROLCONTEXTMENU(0)
Called from CREATEBROWSEABONTXT(733) in module: form_dog2abon.prg
Called from FORM_ABONLIST(461) in module: form_dog2abon.prg
Called from DOGLISTABON(224) in module: form_dog2abon.prg
Called from (b)FORM_MYTABLE(507) in module: tbrw_table.prg
Called from DO_WINDOWEVENTPROCEDURE(0)
Called from TWNDDATA:DOEVENT(0)
Called from DO_ONWNDLAUNCH(0)
Called from (b)INIT(0)


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




Пост N: 3934
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.11.21 13:56. Заголовок: Andrey пишет MG_Debu..


Andrey пишет
 цитата:
MG_Debug(cTbrName,oBrwA:cControlName) // в лог выдаёт -> oBrwList oBrwList


Что просишь (по разному), то и получаешь cTbrName,oBrwA:cControlName
спроси после поправленного MG_Debug(...)
? cForm, This.Name, ThisWindow.Name, oBrwA:cParentWnd, oBrwA:cControlName
Думаю, что MG_Debug(...) (окно на варианте HMG_Alert()) между DEFINE WINDOW ... и END WINDOW портит среду This, т.е. что хотел, то и получил

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


Подготовил третий релиз-кандидат для новой сборки 21.11 со следующим списком изменений:
Скрытый текст

Благодарю за помощь и ваше внимание к этому проекту

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




Пост N: 3946
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.11.21 17:46. Заголовок: gfilatov2002 Неболь..


gfilatov2002
Небольшое предложение по TIMER, выполнять блок кода без смены среды This
h_events.prg
 
****************************************************************************
CASE WM_TIMER
****************************************************************************

i := AScan ( _HMG_aControlIds , wParam )

IF i > 0

IF _HMG_aControlPicture [ i ] == .T. // Once
_DisableControl ( _HMG_aControlNames [ i ], GetParentFormName( i ) )
ENDIF

IF _HMG_aControlVisible[ i ]

_DoControlEventProcedure ( _HMG_aControlProcedures [ i ] , i )

ELSEIF ISBLOCK( _HMG_aControlProcedures[ i ] )
IF _HMG_BeginWindowActive == .F. .OR. _HMG_MainClientMDIHandle != 0
Eval ( _HMG_aControlProcedures[ i ] )
ENDIF

ENDIF


ENDIF
EXIT
****************************************************************************
Пример. На окне MAIN ставим TIMER, а работаем с др. окном в его событиях.
Срабатывание TIMER на MAIN привод к смене на время This среды, что мешает
...
DEFINE WINDOW wMain AT nY, nX WIDTH nW HEIGHT nH ;
...
DEFINE TIMER Timer_1 INTERVAL 20 ACTION ( SetProperty(oMain:Name, "Timer_1", "Enabled", .F.), ;
myFunc1(), SetProperty(oMain:Name, "Timer_1", "Enabled", .T.) )
This.Timer_1.Enabled := .F. // отключить до On Init
_HMG_aControlVisible[ This.Timer_1.Index ] := .F. // выполнять блок кода без смены This среды
...


Спасибо: 0 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


Принято.

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




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


gfilatov2002 пишет
 цитата:
Принято.


Добавить надо для This.Timer_1.Visible := .T.\.F. и Set\GetProperty(..., .T.\.F.)
 
FUNCTION _ShowControl ( ControlName , ParentForm )
...
CASE T == "TIMER"

OTHERWISE
CShowControl ( c )

END CASE

_HMG_aControlVisible [y] := .T.

RETURN Nil

FUNCTION _HideControl ( ControlName , ParentForm )
...
CASE T == "TIMER"

OTHERWISE
HideWindow ( c )

END CASE

_HMG_aControlVisible [y] := .F.

RETURN Nil


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1949
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.11.21 13:01. Заголовок: SergKis пишет: Доба..


SergKis пишет:

 цитата:
Добавить надо для This.Timer_1


Добавил, конечно...
Благодарю за помощь

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1952
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.11.21 11:05. Заголовок: Всем кому это интересно ;-)


Опубликована новая сборка 21.11

Благодарю за помощь Сергея Киселева и Андрея Верченко

Желаю всем доброго здоровья и успеха в делах

P.S. Обновил также Unicode архив.

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 7492
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.11.21 18:01. Заголовок: Andrey А сырец то с..


Andrey
А сырец то смотрел ?
 
#define MG_VERSION "Harbour MiniGUI Extended Edition 21.10.3 ("
*-----------------------------------------------------------------------------*
FUNCTION MiniGuiVersion( nVer )
*-----------------------------------------------------------------------------*
#ifndef __XHARBOUR__
LOCAL cVer := MG_VERSION + hb_ntos( hb_Version( HB_VERSION_BITWIDTH ) ) + "-bit)"
#else
LOCAL cVer := MG_VERSION + iif( IsExe64(), "64", "32" ) + "-bit)"
#endif
LOCAL anOfs

cVer += " " + HMG_CharsetName()

anOfs := { Len( cVer ), 40, 15 }

hb_default( @nVer, 0 )

IF nVer > 2
nVer := 2
ELSEIF nVer < 0
nVer := 0
ENDIF

RETURN Left( cVer, anOfs[ nVer + 1 ] )



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




Пост N: 7146
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.11.21 18:16. Заголовок: Dima пишет: А сырец..


Dima пишет:

 цитата:
А сырец то смотрел ?


Для чего ?
Мне надо в коде версию сравнивать.
Допустим новый пример MiniGUI\SAMPLES\Advanced\Tsb_5Win не будет работать в старых версиях МиниГуи.
Отсюда будет не заслужанные восклицания, типа автор не отладил примеры.
Т.е. примерно так хотелось бы
   cMsg := "ВНИМАНИЕ !;" 
cMsg += "Для сборки требуется версия МиниГуи 21.11 или выше !;;"
IF MiniGuiVersionNumba() < 211100
AlertStop(cMsg,"Checking the MiniGui version")
ENDIF
Вот сделал пока свою функцию так:
FUNCTION MiniGuiVersionNumba()
LOCAL cRegEx, cVer, aVal, nVer := 0, cVal := MiniGuiVersion()
cRegEx := "\d+\.\d+[\d.]*"
aVal := HB_RegEx(cRegEx, cVal)
IF LEN(aVal) > 0
cVal := aVal[1]
cVer := CHARREM( '.', cVal )
cVer := PADR(cVer,6,'0')
nVer := VAL( cVer )
ENDIF
RETURN nVer

Но каждый раз таскать в примеры свою функцию не очень то и приятно.
Хотя она тоже не постоянно требуется.

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




Пост N: 3948
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.11.21 18:26. Заголовок: Andrey Чем не нрави..


Andrey
Чем не нравится Harbour MiniGUI Extended Edition 21.11.0 (32-bit) ANSI
не пойму ?
0 - базовая сборка, будет update 1 => 21.11.1

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




Пост N: 3949
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.11.21 18:48. Заголовок: Andrey пишет Это так..


Andrey пишет
 цитата:
Это так должно быть или опечатка ?


Думаю, что ты что то напутал с установками по каталогам или в файле BATCH\minigui.cfg
пред. версия выдает Harbour MiniGUI Extended Edition 21.10.3 (32-bit) ANSI

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




Пост N: 3950
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.11.21 19:13. Заголовок: Так я уже поставил и..


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

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




Пост N: 7149
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.11.21 19:46. Заголовок: SergKis пишет: проб..


SergKis пишет:

 цитата:
пробую новую версию от сегодня


Опять недосмотрел ...

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




Пост N: 7150
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.12.21 11:00. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Опубликована новая сборка 21.11


Собрал свои проги. Полёт нормальный.

Обратите внимание на новый пример MiniGUI\SAMPLES\Advanced\Tsb_5Win

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1953
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 01.12.21 12:33. Заголовок: Andrey пишет: Полёт..


Andrey пишет:

 цитата:
Полёт нормальный


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

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




Пост N: 3951
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.12.21 13:01. Заголовок: Andrey пишет Вот сд..


Andrey пишет
 цитата:
Вот сделал пока свою функцию так:
FUNCTION MiniGuiVersionNumba()


Можно проще в свой ch (prg) файл добавить
 
#xtranslate MiniGuiVersionChar() => Substr( MiniGuiVersion(), At(".", MiniGuiVersion()) - 2, 8 )
#xtranslate MiniGuiVersionNumba() => Int( Val( MiniGuiVersionChar() ) * 10000 + Val( Right(MiniGuiVersionChar(), 2) ) )

использовать
? "ver. =", MiniGuiVersion()
? "v.m. =", MiniGuiVersionChar()
? "numba =", MiniGuiVersionNumba()

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




Пост N: 7151
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.12.21 17:34. Заголовок: SergKis пишет: Можн..


SergKis пишет:

 цитата:
Можно проще в свой ch (prg) файл добавить


Отличное решение !

Спасибо: 0 
Профиль
krutoff





Пост N: 209
Зарегистрирован: 17.10.05
ссылка на сообщение  Отправлено: 06.12.21 17:58. Заголовок: h_windows.prg


Ситуация такая: в ONINIT формы хочу передать фокус конкретному контролу.
Если окно MODAL -> все Ok, если CHILD -> то фокус всегда на 1-м контроле.
Раскопал: h_windows.prg строка 1536 -> этот блок всегда возвращает взад (на 1-й контрол):
IF _SetFocusedSplitChild( i ) == .F.
_SetActivationFocus( i )
ENDIF
В модальном окне (строка 1513 ....) такого блока нет и поэтому SetFocus в ONINIT отрабатывает.
Закоментировал этот блок - и все Ok. Можно ли блок удалить (строка 1536) ?

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




Пост N: 3967
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.12.21 18:05. Заголовок: krutoff попробуйте ..


krutoff
попробуйте
 
SET OOP ON
...
DEFINE WINDOW ... TOPMOST ;
ON INIT ( This.Topmost := .F., _wPost(0) )
...
(This.Object):Event( 0, {|| This.<контрол>.SetFocus } )
...


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




Пост N: 3968
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.12.21 19:04. Заголовок: gfilatov2002 Как то..


gfilatov2002
Как то не закончено с new ф-ями:
GetDesktopRealTop()
GetDesktopRealLeft()
GetDesktopRealWidth()
GetDesktopRealHeight()
в однобайтной версии hmg нет GetDesktopRealTop(), GetDesktopRealLeft()
в unicode версии hmg нет GetDesktopRealTop(), GetDesktopRealLeft(), GetDesktopRealWidth(), GetDesktopRealHeight()
Пример unicode https://TransFiles.ru/imyut
запуск с параметром Mode :
demo.exe 1
demo.exe 2
demo.exe 3
demo.exe
Использование новых ф-ий лучше чем Sys.ClientWidth и Sys.ClientHeight

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


Пост N: 1733
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 06.12.21 21:01. Заголовок: SergKis пишет: в од..


SergKis пишет:

 цитата:
в однобайтной версии hmg нет GetDesktopRealTop(), GetDesktopRealLeft()


А так ли они нужны?

SergKis пишет:

 цитата:
Использование новых ф-ий лучше чем Sys.ClientWidth и Sys.ClientHeight


Чем?

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1965
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.12.21 21:13. Заголовок: SergKis пишет: в од..


SergKis пишет:

 цитата:
в однобайтной версии hmg нет GetDesktopRealTop(), GetDesktopRealLeft()


Уже добавил эти функции с использованием команды #xtranslate в заголовок hmg.ch

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




Пост N: 3969
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.12.21 21:50. Заголовок: Петр пишет Чем? Дела..


Петр пишет
 цитата:
Чем?


Делаем в примере (остальные оставляем как есть)
 
FUNCTION wRu866()
...
IF App.Cargo:nMode > 0
This.Row := 0 //GetDesktopRealTop()
This.Col := 0 //GetDesktopRealLeft()
This.Width := Sys.ClientWidth //GetDesktopRealWidth()
This.Height := Sys.ClientHeight //GetDesktopRealHeight()
//This.Maximize
ENDIF
...

Запускаем demo.exe 1
У меня win10 pro 14" монитор справа и снизу ~15 pixel отступы, почти в ширину VScrollBar-а
Запускаем demo.exe 2 или 3
Со всех сторон есть зазор ~ 2-3 pixel

 цитата:
А так ли они нужны?


Наверно, так же как
GetWindowRow(hwnd), GetWindowCol(hwnd)
GetClientRow(hwnd), GetClientCol(hwnd)
т.е. при их наличии, если вдруг, TaskBar окажется не внизу, то что то получим в результате

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


Пост N: 1735
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 06.12.21 22:10. Заголовок: Поюзайте MiniGUI\..


Поюзайте MiniGUI\SAMPLES\BASIC\Multi_Monitor несколько раз, каждый раз меняя позицию TaskBar.
И свой пример попробуйте на системе с несколькими мониторами.
SystemParametersInfo( SPI_GETWORKAREA..) работает с PRIMARY дисплеем.

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




Пост N: 3970
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.12.21 22:12. Заголовок: gfilatov2002 пишет У..


gfilatov2002 пишет
 цитата:
Уже добавил эти функции


Тут тоже надо поправить и добавить
 
#translate <p:System,Sys>.ClientRow =>
#translate <p:System,Sys>.ClientCol =>
#translate <p:System,Sys>.ClientWidth => ( GetDesktopWidth () - GetBorderWidth () )
#translate <p:System,Sys>.ClientHeight => ( GetDesktopHeight() - GetBorderHeight() - GetTaskBarHeight() )


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1966
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.12.21 22:47. Заголовок: SergKis пишет: Тут ..


SergKis пишет:

 цитата:
Тут тоже надо поправить и добавить


Сделал
Благодарю за подсказку

Спасибо: 0 
Профиль
krutoff





Пост N: 210
Зарегистрирован: 17.10.05
ссылка на сообщение  Отправлено: 07.12.21 11:24. Заголовок: SergKis Спасибо за ..


SergKis Спасибо за код, но у меня
Define window CHILD
... Define Window ... Virtual PANEL
... EDITBOX
И мне надо дать фокус внутри 2-й формы

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




Пост N: 3971
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.12.21 11:46. Заголовок: krutoff пишет И мне ..


krutoff пишет
 цитата:
И мне надо дать фокус внутри 2-й формы


И в чем разница ?
Контролы на окне имеют уникальные имена.
Вопрос, какую среду This надо в блоке кода ?
Для среды This окна ON INIT {|| _wPost(10) }
Для среды This контрола ON INIT {|| _wPost(10, This.<контрол>.Index) }
Суть этих действий, завершить работу обработчика окна on init и организовать через очередь другое событие (обработчик) по _wPost(...), т.е. отработает
 
IF _SetFocusedSplitChild( i ) == .F.
_SetActivationFocus( i )
ENDIF

потом сработает, через очередь, событие\блок кода 10, зарегистрированный на окне

Спасибо: 0 
Профиль
krutoff





Пост N: 211
Зарегистрирован: 17.10.05
ссылка на сообщение  Отправлено: 07.12.21 13:10. Заголовок: SergKis пишет: пото..


SergKis пишет:

 цитата:
потом сработает, через очередь, событие\блок кода 10, зарегистрированный на окне


Спасибо! Отработало как часы!

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




Пост N: 7160
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.12.21 13:31. Заголовок: krutoff Посмотрите ..


krutoff
Посмотрите доку Сергея Events_in_MiniGui.RU.txt на русском в \MiniGUI\SAMPLES\Advanced\Tsb_5Win
Ну и использование событий по тексту программы.

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




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


gfilatov2002
Небольшая правка
 
METHOD DrawHeaders( lFooters, lDrawCell ) CLASS TSBrowse
...
IF ::lDrawSpecHd
...
nClrFore := ::GetValProp( nClrFore, nClrFore, nJ )

IF nI == nBegin .AND. ::lSelector
nClrBacks := ::nClrSpcHdBack
ELSE
nClrBacks := iif( ::nPhantom == -1, ATail( ::aColumns ):nClrSpcHdBack, nClrPane )
ENDIF

nClrBackS := ::GetValProp( nClrBackS, nClrBackS, nJ )
...

Сейчас SpecHeader имеет цвет SELECTOR-а nClrPane по Default, а все остальные цвета ячейки SELECTOR по вертикали ::nClrSpcHdBack (как у Header)

PS
Если возможно, включите в сборку последнюю версию LetoDbf, клиента и сервер

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

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


Поправил

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1968
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.12.21 10:54. Заголовок: Выложил 1-й апдейт с..


Выложил 1-й апдейт сборки 21.11

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

Благодарю за помощь Сергея Киселева

Желаю всем участникам форума мира и добра

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




Пост N: 3975
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.12.21 12:46. Заголовок: gfilatov2002 надо #..


gfilatov2002
надо
 
#translate <p:System,Sys>.ClientWidth => GetDesktopRealWidth ()
#translate <p:System,Sys>.ClientHeight => GetDesktopRealHeight()

так, как сейчас, дает отступы справа, внизу ~15 pixel, в исправленном везде зазор ~2-3 pixel

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1969
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.12.21 13:12. Заголовок: SergKis пишет: надо..


SergKis пишет:

 цитата:
надо

#translate <p:System,Sys>.ClientWidth => GetDesktopRealWidth ()
#translate <p:System,Sys>.ClientHeight => GetDesktopRealHeight()


Понял, поправлю

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




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


gfilatov2002 пишет
 цитата:
поправлю


еще _TBrowse()
 
DEFAULT aColor := { ;
{ CLR_FOCUSB, {|c,n,b| c := n, iif( b:nCell == n, -CLR_HRED, -RGB( 128, 225, 225 ) ) } }, ;

получше вид будет

PS
в примере Tsb_2tsb того же эффекта можно достичь кодом без AEval(...). По умолчанию oCol:lFixLite := .T., oCol:lOnGotFocusSelect := .T., oCol:lEmptyValToChar := .T.
Скрытый текст


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1970
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.12.21 15:59. Заголовок: SergKis пишет: еще ..


SergKis пишет:

 цитата:
еще _TBrowse()
...
в примере Tsb_2tsb


Понял, уже поправил и выложил новый инсталлятор
Благодарю за помощь

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




Пост N: 3980
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.12.21 16:28. Заголовок: gfilatov2002 лучше ..


gfilatov2002
лучше так
 
STATIC FUNCTION RecordBrowse( oBrw )

LOCAL oCol, ;
aArr := {}

FOR EACH oCol IN oBrw:aColumns
//AAdd( aArr, { oCol:cHeading, Eval( oCol:bData ) } )
AAdd( aArr, { oCol:cHeading, oBrw:GetValue( oCol ) } )

NEXT

SBrowse( aArr, "Record View", {|| .T. }, { "Key", "Value" } )

RETURN NIL


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1971
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.12.21 17:33. Заголовок: SergKis пишет: лучш..


SergKis пишет:

 цитата:
лучше так


OK

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




Пост N: 3982
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.12.21 22:00. Заголовок: gfilatov2002 Предла..


gfilatov2002
Предлагаю правку SBrowse(), что бы можно было управлять тсб и окном + иметь общую ф-ю для работы с записью из тсб, т.е.
Скрытый текст

Задавая в FUNCTION SBrowse( uAlias, cTitle, bSetUp, aCols, nWidth, nHeight, lSql ) // idea from xBrowse
в таком виде
bSetUp := {|ob,xp|
Local lRet := .T.
IF !Empty(xp) // второй вход в блок. Можно менять размеры окна + параметры тсб по переменной ob и This. среды окна
...
ENDIF
Return lRet
}
и исп. Record_SBrowse( oBrw, cTitle, bSetUp, aHead ) как самостоятельный вызов к любому тсб.

PS
Назвать ф-ю можно по традиции
FUNCTION _Record_SBrowse( oBrw, cTitle, bSetUp, aHead, lNoCrLf )
или
FUNCTION _SBrowse_Record( oBrw, cTitle, bSetUp, aHead, lNoCrLf )

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1972
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.12.21 22:42. Заголовок: SergKis пишет: Пред..


SergKis пишет:

 цитата:
Предлагаю правку SBrowse()


Принято

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




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


gfilatov2002 пишет
 цитата:
Принято


Я в тексте небольшую правку сделал, перенес вызов блока 2-ой раз еще ниже (строки //!!!)
Пример сейчас делаю. Ф-ю для работы с записью назвал
FUNCTION SBrowse_Record( oBrw, cTitle, bSetUp, aHead, lNoCrLf )
как приложение к основной SBrowse(), если надо пере назвать, скажите

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




Пост N: 3984
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.12.21 01:11. Заголовок: SergKis пишет Пример..


SergKis пишет
 цитата:
Пример сейчас делаю.


Пример тут https://TransFiles.ru/jg78m
PS
Еще вариант вызова в примере
 
bSetUp := {|ob,xp|
IF !Empty(xp)
ob:SetNoHoles()
ob:SetFocus()
ENDIF
Return .T.
}

sBrowse( Alias(), "DEMO. Test new SBrowse", bSetUp, , Sys.ClientWidth, Sys.ClientHeight )


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




Пост N: 3985
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.12.21 09:36. Заголовок: gfilatov2002 Сделал..


gfilatov2002
Сделал др. вариант SBrowse, привязал размеры к размеру фонта
Пример тут https://TransFiles.ru/7xea7

PS
не оч. нравится место (может др. предложите)
 
lRec := HB_ISARRAY( uAlias ) .and. Len( uAlias[1] ) == 2 .and. Len( aCols ) == 2 .and. ;
aCols[1] == "Key" .and. aCols[2] == "Value"

возможно, надо добавить MODAL окно через параметр
FUNCTION SBrowse( uAlias, cTitle, bSetUp, aCols, nWidth, nHeight, lSql, lModal ) // idea from xBrowse

PS2
Забыл убрать опыт, надо поправить SBrowse
 
DEFAULT uAlias := Alias(), ;
...
lSql := .F., ;
bAfter := {|ob| ob:SetNoHoles(), ob:SetFocus() }
...
и
FUNCTION SBrowse_Record( oBrw, cTitle, bSetUp, aHead, nWidth, nHeight, lNoCrLf )
...
SBrowse( aArr, "Record View", bSetUp, { "Key", "Value" }, nWidth, nHeight )
...


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


Пост N: 1623
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 10.12.21 10:04. Заголовок: SergKis пишет: Сдел..


SergKis пишет:

 цитата:
Сделал др. вариант SBrowse, привязал размеры к размеру фонта
Пример тут https://TransFiles.ru/7xea7


Разрешите встрять) Если в примере нажать кнопку Excel, но экселя нет на компе, появляется окно с ошибкой, после закрытия которого бровс ломается.

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




Пост N: 3986
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.12.21 10:14. Заголовок: PSP пишет Если в при..


PSP пишет
 цитата:
Если в примере нажать кнопку Excel, но экселя нет на компе, появляется окно с ошибкой, после закрытия которого бровс ломается


Еще раз проверил, работает у меня и таблица и запись => все в Excel уходит, но если нет excel, надо в методе тсб добавлять проверку, но это другое , пока эти места идут, как есть.

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 33
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет