On-line: гостей 2. Всего: 2 [подробнее..]
АвторСообщение
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: 1973
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.12.21 11:28. Заголовок: SergKis пишет: Сдел..


SergKis пишет:

 цитата:
Сделал др. вариант SBrowse, привязал размеры к размеру фонта


Да, этот вариант понравился своим лаконичным примером
Принято. Благодарю за помощь

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




Пост N: 1974
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.12.21 21:38. Заголовок: SergKis пишет: надо ..


SergKis пишет:

 цитата:
надо добавить MODAL окно


Да, согласен, в противном случае карточка 'Record View' прячется под основное окно
Остановился на таком варианте (с использованием переменной lRec):
Скрытый текст

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

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




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


gfilatov2002 пишет
 цитата:
Остановился на таком варианте


Для MODAL окна надо задействовать _hmg_InplaceParentHandle , иначе родителем modal будет MAIN окно, что не есть хорошо. Надо поправить еще
 
LOCAL nGh := oApp:GapsHeight

IF HB_ISARRAY( bSetUp )
bAfter := bSetUp[2]
bSetUp := bSetUp[1]
ENDIF

IF HB_ISLOGICAL( bSetUp )
lCellBrw := bSetUp
bSetUp := NIL
ENDIF

DEFAULT uAlias := Alias(), ;
cTitle := iif( ValType( uAlias ) == "C", uAlias, "SBrowse" ), ;
bSetUp := {|| .F. }, ;
aCols := {}, ;
nWidth := GetSysMetrics( 0 ) * .75, ;
nHeight := GetSysMetrics( 1 ) / 2, ;
lSql := .F.

IF HB_ISARRAY( bSetUp )
bAfter := bSetUp[2]
bSetUp := bSetUp[1]
ENDIF




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




Пост N: 1975
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.12.21 22:19. Заголовок: SergKis пишет: Для ..


SergKis пишет:

 цитата:
Для MODAL окна надо задействовать _hmg_InplaceParentHandle


Добавил присвоение этой переменной перед объявлением модального окна таким образом

 цитата:
_HMG_InplaceParentHandle := GetActiveWindow()



SergKis пишет:

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


Сделал, конечно.

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




Пост N: 3992
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.12.21 22:44. Заголовок: gfilatov2002 Еще по..


gfilatov2002
Еще поправить в SBrowse()
 
:bRClicked := {|| SBrowse_Record( oBrw ) }
:lRecLockArea := .T.
IF lEdit
AEval( :aColumns, {| o | o:lEdit := ! o:cFieldTyp $ "+=^" } )
ENDIF

IF lRec


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




Пост N: 1976
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.12.21 23:13. Заголовок: SergKis пишет: Еще ..


SergKis пишет:

 цитата:
Еще поправить в SBrowse()


Ok

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




Пост N: 3994
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.12.21 23:54. Заголовок: gfilatov2002 Такая ..


gfilatov2002
Такая правка, решила проблему цвета в header, footer колонки "SELECTOR"
 
METHOD DrawHeaders( lFooters, lDrawCell ) CLASS TSBrowse
...
IF ::lFooting .AND. ::lDrawFooters
...
If !( nJ == 1 .AND. ::lSelector ) // JP
nClrBack := iif( oColumn:nClrFootBack != NIL, oColumn:nClrFootBack, nClrFootBack )
ELSEIF ::nClrSelectorHdBack != NIL
nClrBack := ::nClrSelectorHdBack

ELSE
nClrBack := ATail( ::aColumns ):nClrFootBack
ENDIF
nClrBack := ::GetValProp( nClrBack, nClrBack, nJ )
...
Еще добавка, для определения, есть ли реально колонка в тсб
METHOD nColumn( cName, lPos ) INLINE _nColumn( Self, cName, !Empty( lPos ) )

FUNCTION _nColumn( oBrw, cName, lPos )
LOCAL nPos := AScan( oBrw:aColumns, {| oCol | Upper( oCol:cName ) == Upper( cName ) } )
RETURN iif( Empty( lPos ), Max( nPos, 1 ), nPos )


т.е.
IF oBrw:nColumn("ORDKEYNO", .T.) > 0
...
ENDIF

тогда поправить _TBrowse()
...
DEFAULT bEnd := {|ob,op|
Local aCol, nI, nK
// SELECTOR и ORDKEYNO не меняем width
IF op:uSelector != NIL .and. op:lAdjust == NIL .and. ob:lNoHScroll
nK := Max( ob:nColumn("SELECTOR", .T.), ob:nColumn("ORDKEYNO", .T.) )
IF nK > 0
aCol := {}
FOR nI := nK TO Len( ob:aColumns )
IF ob:aColumns[ nI ]:lVisible
AAdd( aCol, nI )
ENDIF
NEXT
ENDIF
ob:AdjColumns( aCol )
ENDIF

// нет горизонтального HScroll и есть SELECTOR
IF ob:nLen > ob:nRowCount() // нужен VScroll
ob:ResetVScroll( .T. )
ENDIF
ob:SetNoHoles()
ob:SetFocus()
Return Nil
}

Тогда задаем
oTsb:aNumber := { 1, 70 }
oTsb:uSelector := 20

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




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


gfilatov2002 пишет
 цитата:
Остановился на таком варианте (с использованием переменной lRec)


Может надо добавить (с обработкой _hmg_InplaceParentHandle)
 
FUNCTION SBrowse( uAlias, cTitle, bSetUp, aCols, nWidth, nHeight, lSql, lModal ) // idea from xBrowse
...
DEFAULT lModal := .F.
...
IF lRec .or. lModal
IF lRec
nWidth *= .67
ENDIF

DEFINE WINDOW &cFormName AT 0, 0 WIDTH nWidth HEIGHT nHeight TITLE cTitle ;
MODAL ;
BACKCOLOR RGB( 191, 219, 255 )
ELSE
...


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




Пост N: 1977
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 11.12.21 12:33. Заголовок: SergKis пишет: Така..


SergKis пишет:

 цитата:
Такая правка, решила проблему


SergKis пишет:

 цитата:
Еще добавка


SergKis пишет:

 цитата:
надо добавить (с обработкой _hmg_InplaceParentHandle)


Большое спасибо за предложения!
Проверю и отпишусь

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




Пост N: 3996
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.12.21 13:45. Заголовок: gfilatov2002 Правка..


gfilatov2002
Правка _TBrowse()
 
...
DEFAULT oParam:bSpecHdEnum := {|ob,op,cChar| // нумерация SpecHd колонок, можно исп. в своем коде вызов
Local oCol, cCnt, nCnt := 0 // renumbering SpecHeader
IF ob:lDrawSpecHd
DEFAULT cChar := op:cSpecHdChar
DEFAULT cChar := "."

FOR EACH oCol IN ob:aColumns
IF oCol:cName == "SELECTOR" ; LOOP
ENDIF
cCnt := cChar

IF oCol:cName != "ORDKEYNO" .and. oCol:lVisible
cCnt := hb_ntos( ++nCnt )
ENDIF
oCol:cSpcHeading := cCnt
NEXT
ENDIF
Return Nil
}


DEFAULT oParam:bAdjColumns := {|ob| // "растягивание" колонок в пределах окна тсб
Local aCol, nI, nK
// SELECTOR and ORDKEYNO не меняем width
nK := Max( ob:nColumn("SELECTOR", .T.), ob:nColumn("ORDKEYNO", .T.) )
IF nK > 0
aCol := {}
FOR nI := nK TO Len( ob:aColumns )
IF ob:aColumns[ nI ]:lVisible
AAdd( aCol, nI )
ENDIF
NEXT
ENDIF
ob:AdjColumns( aCol )
Return Nil
}


DEFAULT bEnd := {|ob,op|
// нет горизонтального HScroll и есть SELECTOR
IF op:uSelector != NIL .and. op:lAdjust == NIL .and. ob:lNoHScroll
IF HB_ISBLOCK( op:bAdjColumns )
EVal( op:bAdjColumns, ob, op ) // :AdjColumns(...)
ENDIF

ENDIF
IF ob:nLen > ob:nRowCount() // нужен VScroll
ob:ResetVScroll( .T. )
ENDIF
ob:SetNoHoles()
ob:SetFocus()
Return Nil
}
...
IF ( :GetAllColsWidth() - 1 ) > ( _GetClientRect( :hWnd )[3] )
:lNoHScroll := .F.
:lMoreFields := ( :nColCount() > 30 )
ELSEIF oParam:uSelector == NIL .and. oParam:lAdjust == NIL
IF HB_ISBLOCK( oParam:bAdjColumns )
EVal( oParam:bAdjColumns, oBrw, oParam ) // :AdjColumns(...)
ENDIF

ENDIF
...
IF HB_ISBLOCK( bEnd ) ; EVal( bEnd, oBrw, oParam )
ENDIF

DO EVENTS

RETURN oBrw


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




Пост N: 1978
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 11.12.21 18:55. Заголовок: SergKis пишет: Прав..


SergKis пишет:

 цитата:
Правка _TBrowse()


Все изменения приняты
Благодарю за помощь

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




Пост N: 3997
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.12.21 09:31. Заголовок: gfilatov2002 Предло..


gfilatov2002
Предложение по передаче внешних параметров для обработки в блоке кода ф-ии SBrowse
 
FUNCTION SBrowse( uAlias, cTitle, bSetUp, aCols, nWidth, nHeight, lSql ) // idea from xBrowse
...
LOCAL uParam, bRecord

IF HB_ISARRAY( cTitle )
uParam := cTitle[2]
cTitle := cTitle[1]
ENDIF

IF HB_ISARRAY( bSetUp )
bRecord := iif( Len(bSetUp) > 2, bSetUp[3], NIL )

bAfter := bSetUp[2]
bSetUp := bSetUp[1]
ENDIF
...
тут DEFINE WINDOW .... для окон
...
This.Cargo := uParam

nY := nGh
nX := nGw
...
:lUpdate := .T.
:bRClicked := {|| _SetThisFormInfo( oBrw:cParentWnd ), SBrowse_Record( oBrw, , bRecord ), _SetThisFormInfo() }

...
FUNCTION SBrowse_Record( oBrw, cTitle, bSetUp, aHead, nWidth, nHeight, lNoCrLf )
...
SBrowse( aArr, {"Record View", oBrw}, bSetUp, { "Key", "Value" }, nWidth, nHeight )

RETURN NIL



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




Пост N: 1979
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.12.21 11:15. Заголовок: SergKis пишет: Пред..


SergKis пишет:

 цитата:
Предложение по передаче внешних параметров


Принято

Так выглядит сейчас функция SBrowse_Record() - для проверки:
FUNCTION SBrowse_Record( oBrw, cTitle, bSetUp, aHead, nWidth, nHeight, lNoCrLf ) 

LOCAL oCol, aArr := {}, cHdr
DEFAULT cTitle := { "Record View", oBrw }, bSetUp := .T., aHead := { "Key", "Value" }, lNoCrLf := .F.

FOR EACH oCol IN oBrw:aColumns
IF oCol:cName == "SELECTOR" ; LOOP
ENDIF
cHdr := oCol:cHeading
IF lNoCrLf .and. CRLF $ cHdr
cHdr := StrTran( cHdr, CRLF, " " )
ENDIF
AAdd( aArr, { cHdr, oBrw:GetValue( oCol ) } )
NEXT

SBrowse( aArr, cTitle, bSetUp, aHead, nWidth, nHeight )

RETURN NIL


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




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


gfilatov2002 пишет
 цитата:
Так выглядит


В этом варианте, если задать cTitle := "My test record", то oBrw не попадет в ф-ю, лучше
DEFAULT cTitle := "Record View", ...
SBrowse( aArr, {cTitle, oBrw}, bSetUp, aHead, nWidth, nHeight )

PS
Можно продублировать на oBrw параметр
:lUpdate := .T.
:Cargo := uParam

:bRClicked := {|| _SetThisFormInfo( oBrw:cParentWnd ), SBrowse_Record( oBrw, , bRecord ), _SetThisFormInfo() }

Добавить параметр lModal. Для проверки вариант
 
FUNCTION SBrowse_Record( oBrw, cTitle, bSetUp, aHead, nWidth, nHeight, lNoCrLf, lModal )

LOCAL oCol, aArr := {}, cHdr
DEFAULT cTitle := "Record View", bSetUp := .T., aHead := { "Key", "Value" }, lNoCrLf := .F.

FOR EACH oCol IN oBrw:aColumns
IF oCol:cName == "SELECTOR" ; LOOP
ENDIF
cHdr := oCol:cHeading
IF lNoCrLf .and. CRLF $ cHdr
cHdr := StrTran( cHdr, CRLF, " " )
ENDIF
AAdd( aArr, { cHdr, oBrw:GetValue( oCol ) } )
NEXT

SBrowse( aArr, {cTitle, oBrw}, bSetUp, aHead, nWidth, nHeight, , lModal )

RETURN NIL


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




Пост N: 1980
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.12.21 11:48. Заголовок: SergKis пишет: DEFA..


SergKis пишет:

 цитата:
DEFAULT cTitle := "Record View", ...
SBrowse( aArr, {cTitle, oBrw}, bSetUp, aHead, nWidth, nHeight )


Понял, спасибо

SergKis пишет:

 цитата:
продублировать на oBrw параметр


Ok

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




Пост N: 3999
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.12.21 11:50. Заголовок: gfilatov2002 Одновр..


gfilatov2002
Одновременно ответили, поправил, пред. пост, посмотрите. lModal для отдельного запуска с др. aHead

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




Пост N: 1981
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.12.21 11:56. Заголовок: SergKis пишет: lMo..


SergKis пишет:

 цитата:
lModal для отдельного запуска


Принято

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




Пост N: 4000
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.12.21 12:54. Заголовок: gfilatov2002 Предло..


gfilatov2002
Предложение выделить создание колонки # (номер по порядку) в отд. ф-ю, для исп. в др. тсб, т.е.
Назвать, может быть, ф-ю как то иначе ? Скрытый текст

Использовать в др. тсб
oCol := _TBrowse_ColNumber( oBrw, 50 )
oBrw:InsColumn( 1, oCol )

PS
Можно метод такой сделать в классе и делать вызов oBrw:InsColNumber( nWidth, nNumber )

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




Пост N: 1982
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.12.21 15:02. Заголовок: SergKis пишет: мет..


SergKis пишет:

 цитата:
метод такой сделать в классе и делать вызов oBrw:InsColNumber( nWidth, nNumber )


Да, идея с новым методом понравилась. Тогда можно спрятать вызов oBrw:InsColumn( nNumber, oCol ) внутрь этого метода...

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




Пост N: 4001
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.12.21 15:14. Заголовок: gfilatov2002 пишет Д..


gfilatov2002 пишет
 цитата:
Да, идея с новым методом понравилась.


Сделаю

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




Пост N: 4002
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.12.21 15:34. Заголовок: gfilatov2002 Метод ..


gfilatov2002
Метод тут Скрытый текст

В ф-ии так выходит
 
FUNCTION _DefineTBrowse( ControlName, ParentFormName, nCol, nRow, nWidth, nHeight, ;
...
LOCAL cFontHead, cFontFoot, oCol, nW
...
IF HB_ISNUMERIC( nColNumber )
nColNumber := iif( nColNumber > 0 .AND. nColNumber <= n, nColNumber, 1 )

oBrw:InsColNumber( 80, nColNumber )

oBrw:nCell := nColNumber + 1
oBrw:nFreeze := nColNumber
oBrw:lLockFreeze := .T.

IF HB_ISNUMERIC( nW ) .AND. nW > 0
oBrw:GetColumn( nColNumber ):nWidth := nW
ENDIF
ENDIF
...

Пример на изменении пошел нормально

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




Пост N: 1983
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.12.21 18:13. Заголовок: SergKis пишет: Мето..


SergKis пишет:

 цитата:
Метод тут


Большое спасибо
Это - реальная помощь

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




Пост N: 4003
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.12.21 18:57. Заголовок: gfilatov2002 Попроб..


gfilatov2002
Попробовал добавить параметр в SBrowse(... , lNumber) и строки
 
IF lRec
:lNoHScroll := .T.
ELSEIF !Empty( lNumber )
:lFooting := .T.
:lDrawFooters := .T.
:nHeightFoot := :nHeightHead
AEval( :aColumns, {| o | o:cFooting := "" } )
:InsColNumber()
:GetColumn("ORDKEYNO"):cFooting := hb_ntos( :nLen )
:nFreeze := :nColumn("ORDKEYNO")
:nCell := :nFreeze + 1
:lLockFreeze := .T.

ENDIF

в примере lNumber параметр сделал .T.
результат, в целом, получился с замечаниями:
1 - колонка SELECTOR стала 3D (кроме header)
2 - у колонки ORDKEYNO header стал 3D и цвет у строки фокуса, как у ячейки в фокусе
3 - у колонки ORDKEYNO цвет у строки фокуса, как у ячейки в фокусе
Excel отрабатывает. На карточке появляется поле #, как бы почти все ok!
В целом замечания не мешают

Разобрался, 1 и 2 это градиент откуда то взялся, а не 3D. В примерах с _TBrowse(...) и колонкой Number все ok!, такого нет.
Сделал так
 
LOCAL uParam, bRecord, nClr
...
IF lEdit
AEval( :aColumns, {| o | o:lEdit := ! o:cFieldTyp $ "+=^" } )
ENDIF
nClr := :GetColumn(1):nClrHeadBack
IF lRec
:lNoHScroll := .T.
ELSEIF !Empty( lNumber )
:lFooting := .T.
:lDrawFooters := .T.
:nHeightFoot := :nHeightHead
:InsColNumber()
:GetColumn("ORDKEYNO"):cFooting := hb_ntos( :nLen )
:nFreeze := :nColumn("ORDKEYNO")
:nCell := :nFreeze + 1
:lLockFreeze := .T.
ENDIF
END WITH

END TBROWSE

IF !Empty( lNumber )
oBrw:GetColumn("SELECTOR"):nClrBack := nClr
oBrw:GetColumn("ORDKEYNO"):nClrHeadBack := nClr
ENDIF

nY := This.ClientHeight - nGh - oApp:H1
...

Может, конечно, lNumber не надо (но с ним неплохо) ?

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




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


SergKis пишет:

 цитата:
Попробовал добавить параметр в SBrowse(... , lNumber)


Думаю, что такой параметр не помешает
Благодарю за ваши усилия по доведению этой функции "до ума"

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




Пост N: 4004
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.12.21 21:28. Заголовок: gfilatov2002 Тут ещ..


gfilatov2002
Тут еще с методом
 
METHOD ExcelOle( cXlsFile, lActivate, hProgress, cTitle, hFont, lSave, bExtern, aColSel, bPrintRow ) CLASS TSBrowse
...
uData := iif( ValType( ::aColumns[ nCol ]:cFooting ) == "B", Eval( ::aColumns[ nCol ]:cFooting, nCol, Self ), ;
::aColumns[ nCol ]:cFooting )
...
Если эту правку сделать, то можно убрать строку, но может не надо убирать эту строку,
т.к. не знаю что делает на тему :cFooting метод oBrw:Report()
:InsColNumber()
:GetColumn("ORDKEYNO"):cFooting := hb_ntos( :nLen )
:nFreeze := :nColumn("ORDKEYNO")


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




Пост N: 1985
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.12.21 22:01. Заголовок: SergKis пишет: ..


SergKis пишет:

 цитата:
uData := iif( ValType( ::aColumns[ nCol ]:cFooting ) == "B", Eval( ::aColumns[ nCol ]:cFooting, nCol, Self ), ;
::aColumns[ nCol ]:cFooting )


Благодарю за поправку
Я добавил также строку, чтобы не было разрыва курсора при движении по ячейкам

 цитата:
IF ! Empty( lNumber )
oBrw:GetColumn( "SELECTOR" ):nClrBack := nClr
oBrw:GetColumn( "ORDKEYNO" ):nClrHeadBack := nClr
oBrw:GetColumn( "ORDKEYNO" ):nClrFocuBack := oBrw:nClrPane
ENDIF



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




Пост N: 4005
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.12.21 08:30. Заголовок: gfilatov2002 Добавь..


gfilatov2002
Добавьте метод в CLASS TDlu2Pix
 
METHOD TextWidth( cText, nSize, cFont, lBold, cChar ) CLASS TDlu2Pix
LOCAL hFont, nWidth

cChar := hb_defaultValue(cChar, 'A')
cText := hb_defaultValue(cText, Replicate(cChar, 2))
lBold := hb_defaultValue(lBold, .F. )
cFont := hb_defaultValue(cFont, _HMG_DefaultFontName)
nSize := hb_defaultValue(nSize, _HMG_DefaultFontSize)
IF ValType(cText) == 'N' ; cText := Replicate(cChar, cText)
ENDIF
hFont := InitFont(cFont, nSize, lBold)
nWidth := GetTextWidth(Nil, cText, hFont)
DeleteObject(hFont)

RETURN nWidth

что бы можно было width контрола получить от dlu, напрмер, кратное :W(0.5)
w := 0
o := oDlu4Font(nSize) // nSize: from 8 to 26
t := o:TextWidth('Bla bla ... bla', nSize)
a := array(20)
aFill(a, o:W(0.5))
FOR EACH n IN a
w += n
IF w > t ; EXIT
ENDIF
NEXT
? t, w, o:H1

вместо этих команд в моем варианте есть метод

METHOD Breadth( w, k ) CLASS TDlu2Pix
LOCAL nWidth := 0

WHILE w > ( nWidth += ::W( hb_defaultValue(k, 0.5) ) )
END

RETURN nWidth

т.е. делаю w := o:Breadth( o:TextWidth('Bla bla ... bla', nSize), 0.5 )


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




Пост N: 1986
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.12.21 10:28. Заголовок: SergKis пишет: Доба..


SergKis пишет:

 цитата:
Добавьте метод


Ok

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




Пост N: 4006
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.12.21 10:40. Заголовок: gfilatov2002 пишет O..


gfilatov2002 пишет
 цитата:
Ok


Тогда еще немного правок для nFontSize
 
FUNCTION oDlu4Font( nFontSize, lDlu2Pix )
...
IF lDlu2Pix
RETURN TDlu2Pix():New( nPrcW, nPrcH, nFontSize )
ENDIF
...
FUNCTION oDlu2Pixel( nPrcW, nPrcH, nFontSize )
...
IF o_AppDlu2Pixel == NIL

nFontSize := hb_defaultValue( nFontSize, _HMG_DefaultFontSize )

o_AppDlu2Pixel := TDlu2Pix():New( nPrcW, nPrcH, nFontSize )
...
CLASS TDlu2Pix
...
VAR nB INIT 0
VAR nSize INIT 0


METHOD New( nPrcW, nPrcH, nSize ) INLINE ( ::nScaleWidth := hb_defaultValue( nPrcW, 100 ), ;
::nScaleHeight := hb_defaultValue( nPrcH, 100 ), ::nSize := hb_defaultValue( nSize, ::nSize ), ;
::UnitsToPixels(), Self ) CONSTRUCTOR
...
METHOD TextWidth( cText, nSize, cFont, lBold, cChar ) CLASS TDlu2Pix
...
nSize := hb_defaultValue(nSize, iif( Empty(::nSize), _HMG_DefaultFontSize, ::nSize ) )
...
METHOD Breadth( nW, k ) CLASS TDlu2Pix
LOCAL nWidth := 0

IF HB_ISCHAR(nW) ; nW := ::TextWidth(nW)
ENDIF

WHILE nW > ( nWidth += ::W( hb_defaultValue(k, 0.5) ) )
END

RETURN nWidth
...


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




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


SergKis пишет:

 цитата:
еще немного правок


Понял, добавлю...

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




Пост N: 1988
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.12.21 11:18. Заголовок: Выложил 2-й апдейт с..


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

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

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

Желаю всем счастья и хорошего самочувствия в наступающем году

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




Пост N: 4016
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.12.21 23:47. Заголовок: gfilatov2002 Немног..


gfilatov2002
Немного поправил SBrowse Скрытый текст

Пример на базе Tsb_sbrowse Скрытый текст

Есть проблемка с Super Header и OLE, т.е. вывод таблицы в excel снимается.
Я не специалист ole excel, не работаю с ним. Потому только сообщаю

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




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


SergKis пишет:

 цитата:
поправил SBrowse


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

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




Пост N: 4020
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.12.21 17:35. Заголовок: gfilatov2002 Поправ..


gfilatov2002
Поправил
 
METHOD LoadFields( lEditable, aColSel, cAlsSel, aNameSel, aHeadSel ) CLASS TSBrowse
...
ELSEIF cType $ "=@T"
cPicture := Nil

nSize := GetTextWidth( 0, Replicate( "9", 24 ), hFont )
ELSEIF cType $ "^+"
...
IF ValType( ::aFormatPic ) == "A" .AND. ! Empty( ::aFormatPic ) .AND. n <= Len( ::aFormatPic ) .and. ! cType $ "=@T"
cPicture := ::aFormatPic[ n ]
ENDIF
...

У этих полей Picture оказался равным '9999999999'

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




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


SergKis пишет:

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


Ok

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




Пост N: 1992
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.01.22 22:02. Заголовок: SergKis пишет: Если..


SergKis пишет:

 цитата:
Если возможно, включите в сборку последнюю версию LetoDbf, клиента и сервер


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

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




Пост N: 4029
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.01.22 21:19. Заголовок: gfilatov2002 Показа..


gfilatov2002
Показалось интересным, правка записи в SBrowse() Скрытый текст

Пример тут https://TransFiles.ru/fvyp6

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




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


SergKis пишет:

 цитата:
правка записи в SBrowse()


Большое спасибо
Это - то, что нужно...

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




Пост N: 4030
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.01.22 23:13. Заголовок: gfilatov2002 пишет Э..


gfilatov2002 пишет
 цитата:
Это - то, что нужно...


Пример с логическим полем в структуре и вариантом bSetUp для SBrowse()
тут https://TransFiles.ru/4zp9j

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




Пост N: 4031
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.01.22 18:06. Заголовок: gfilatov2002 Почист..


gfilatov2002
Почистил, поправил SBrowse(), добавил задать размеры через nWidth, nHeight для SBrowse_Record()
Пример и h_controlmisc2.prg тут https://TransFiles.ru/3i6zg

Еще правка
 
METHOD D( nKfc ) CLASS TDlu2Pix

LOCAL nVal := ::nPixWidthDT

IF HB_ISNUMERIC( nKfc ) .AND. nKfc > 0
IF nKfc == 1 ; nVal := ::nPixWidthDT
ELSEIF nKfc == 2 ; nVal := ::nPixWidthDT1
ELSEIF nKfc == 3 ; nVal := ::nPixWidthDT2

ELSE ; nVal := Int( nKfc * nVal )
ENDIF
ENDIF

RETURN nVal


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




Пост N: 1994
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 08.01.22 19:26. Заголовок: SergKis пишет: попр..


SergKis пишет:

 цитата:
поправил SBrowse()


Принято
Немного отформатировал, убрал в блоках кода неиспользуемое присвоение
 цитата:
nn := obr:nAt



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

SergKis пишет:

 цитата:
Еще правка


OK

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




Пост N: 4032
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.01.22 19:39. Заголовок: PS Пример тот же, но..


PS
Пример тот же, но с добавкой подключения блока кода для SBrowse_Record(...) для информации
Скрытый текст


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




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


Подготовил третий релиз-кандидат для новой сборки 22.01
Кратко, что нового:
Скрытый текст


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




Пост N: 4034
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.01.22 16:51. Заголовок: gfilatov2002 Добавь..


gfilatov2002
Добавьте строки
 
FUNCTION _TBrowse( oParam, uAlias, cBrw, nY, nX, nW, nH )
...
IF HB_ISBLOCK( bEnd ) ; EVal( bEnd, oBrw, oParam )
ENDIF

IF HB_ISARRAY( oParam:aEvents )
FOR EACH aTmp IN oParam:aEvents
(This.Object):Event( aTmp[1], aTmp[2] )
NEXT
ENDIF

DO EVENTS

RETURN oBrw

Тогда можно делать
WITH OBJECT oTsb
:aEvents := {}
AADD( :aEvents, { 3, {|ow,ky,ob|
Local cAls
ob := iif( Empty(ob), ow:Cargo:oBrw, ob )
cAls := ob:cAlias
IF ob:nLen > 0
IF (cAls)->(RLock())
IF (cAls)->(Deleted())
(cAls)->(dbRecall())
ELSE
(cAls)->(dbDelete())
ENDIF
(cAls)->(dbUnlock())
ENDIF
//ob:DeleteRow(.F., .F.)
ob:SetFocus()
ob:DrawSelect()
DO EVENTS
ENDIF
Return Nil
} } )
...
END WITH


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




Пост N: 1996
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.01.22 17:15. Заголовок: SergKis пишет: Доба..


SergKis пишет:

 цитата:
Добавьте строки


OK

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




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


Завершена подготовка новой сборки 22.01, которая будет опубликована на следующей неделе.

Искренне благодарю Сергея Киселева и Андрея Верченко за помощь при подготовке этой сборки

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




Пост N: 4035
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.01.22 13:44. Заголовок: gfilatov2002 предло..


gfilatov2002
предложение
 
CLASS TSBrowse FROM TControl
...
DATA lYesNo AS LOGICAL INIT .F. // .T. - text _HMG_aABMLangLabel[ 20\21 ]

...
METHOD DrawLine( xRow, lDrawCell ) CLASS TSBrowse
...
ELSEIF Empty( cPicture ) .OR. lMultiLine
//uData := iif( ValType( uData ) != "C", cValToChar( uData ), uData )
IF ValType( uData ) != "C"
IF ValType( uData ) == "L" .and. ::lYesNo
uData := _HMG_aABMLangLabel[ iif( uData, 20, 21 ) ]
ELSE
uData := cValToChar( uData )
ENDIF

ENDIF
ELSE
...
METHOD DrawSelect( xRow, lDrawCell ) CLASS TSBrowse
...
ELSEIF Empty( cPicture ) .OR. lMulti
//uData := iif( ValType( uData ) != "C", cValToChar( uData ), uData )
IF ValType( uData ) != "C"
IF ValType( uData ) == "L" .and. ::lYesNo
uData := _HMG_aABMLangLabel[ iif( uData, 20, 21 ) ]
ELSE
uData := cValToChar( uData )
ENDIF
ENDIF

ELSE
...

тогда вместо F\T будут тексты из _HMG_aABMLangLabel[ 20\21 ], т.е. Yes\No или от языка Да\Нет ...
В примере с SBrowse, например, делаем так Скрытый текст


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




Пост N: 4036
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.01.22 15:07. Заголовок: PS Можно сделать чер..


PS
Можно сделать через массив текстов в классе, т.е.
 
DATA aYesNo AS ARRAY INIT { _HMG_aABMLangLabel[20], _HMG_aABMLangLabel[21] }

Тогда можно ставить свой текст для вывода в методах
uData := ::aYesNo[ iif( uData, 1, 2 ) ]
но может это избыточно

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




Пост N: 1998
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 23.01.22 18:25. Заголовок: SergKis пишет: сдел..


SergKis пишет:

 цитата:
сделать через массив текстов в классе


Да, этот вариант понравился больше.
Тогда можно и не изменять пример - изменения для логических полей подтягиваются автоматически
Благодарю за предложение

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




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


gfilatov2002 пишет
 цитата:
тот вариант понравился больше


Тогда надо еще правку внести
 
METHOD Edit( uVar, nCell, nKey, nKeyFlags, cPicture, bValid, nClrFore, nClrBack ) CLASS TSBrowse
...
ELSEIF ( cType == "L" .AND. lLogicDrop ) .OR. oCol:lComboBox
...
nHeight := Max( 10, Min( 10, Len( aGet ) ) ) * ::nHeightCell

ELSE

IF ::lYesNo
aGet := { ::aYesNo[ 1 ], ::aYesNo[ 2 ] }
ELSE
aGet := { ::aMsg[ 1 ], ::aMsg[ 2 ] }
ENDIF

IF nKey == VK_RETURN
uValue := iif( uValue, 1, 2 )
ELSE
uValue := Max( 1, AScan( aGet, Upper( Chr( nKey ) ) ) )
ENDIF

nHeight := ::nHeightCell * 4 // 1.54

ENDIF
...
В примере так можно делать
bRec := {|ob,um|
Local oc, fn
IF Empty(um) // before END TBROWSE
ob:lYesNo := .T.
ob:aYesNo[1] := "Вкл."
ob:aYesNo[2] := "Выкл."

ELSE // after END TBROWSE
fn := GetFontHandle("Bold")
FOR EACH oc IN ob:aColumns
IF oc:cName == "SELECTOR" ; LOOP
ENDIF
oc:hFontHead := fn
NEXT
ob:SetNoHoles()
ob:GoRight()
DO EVENTS
ob:SetFocus()
ENDIF
Return .T.
}
...


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




Пост N: 1999
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.01.22 11:05. Заголовок: SergKis пишет: aGet..


SergKis пишет:

 цитата:
aGet := { ::aMsg[ 1 ], ::aMsg[ 2 ] }


Благодарю за подсказку
Убрал новую переменную :aYesNo и использовал вместо нее уже готовый массив :aMsg.
Введение новой переменной :lYesNo посчитал излишним также, отображение элементов вышеназванного массива для логических полей можно всегда изменить, переопределив 1-е и 2-е значение этого массива.

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




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


gfilatov2002 пишет
 цитата:
Введение новой переменной :lYesNo посчитал излишним также, отображение элементов вышеназванного массива для логических полей можно всегда изменить, переопределив 1-е и 2-е значение этого массива.


Не очень понял. ::aMsg[1], ::aMsg[2] к отображению в ::DrawSelect() и :DrawLine() не имеет отношения, там cValToChar(uData), т.е. F\T в таблице видим. ::aMsg[1], ::aMsg[2] возникают для ::Edit(...) с cType == "L" .AND. lLogicDrop в TComboBox(). Соединить на одинаковый текст для вывода в таблице и TComboBox() на карточке надо, наверное, подключив :aMsg вместо :aYesNo. :lYesNo нужна, в таком случае, только для сохранения старого варианта.

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




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


SergKis пишет:

 цитата:
подключив :aMsg вместо :aYesNo


Именно так и сделал

SergKis пишет:

 цитата:
:lYesNo нужна, в таком случае, только для сохранения старого варианта


Такая совместимость не требуется, на мой взгляд
Использование Yes\No вместо T\F на карточке представляется вполне логичным

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




Пост N: 4039
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.01.22 16:51. Заголовок: gfilatov2002 Еще не..


gfilatov2002
Еще небольшие правки по SBrowse
 
IF /*! Empty( lNumber ) .or.*/ oBrw:nColumn( "ORDKEYNO", .T. ) > 0
oBrw:GetColumn( "SELECTOR" ):nClrBack := nClr
oBrw:GetColumn( "ORDKEYNO" ):nClrHeadBack := nClr
oBrw:GetColumn( "ORDKEYNO" ):nClrFocuBack := oBrw:nClrPane
ENDIF
...
nY := Len( oBrw:aColumns )
oBrw:aColumns[ nY - 1 ]:nWidth += 50
oBrw:aColumns[ nY - 1 ]:cName := "KEY"
oBrw:aColumns[ nY - 1 ]:lEdit := .F.

oBrw:aColumns[ nY ]:lEdit := .F.
oBrw:aColumns[ nY ]:cName := "VALUE"
...
IF HB_ISOBJECT( oBrw:Cargo ) .and. oBrw:ClassName == "TSBROWSE" .and. oBrw:Cargo:lIsDbf
oBrw:Cargo:lRecLockArea := .T.
oCol := oBrw:GetColumn("VALUE") //aColumns[3]

oCol:lEdit := .T.
...

Тогда пример с карточкой может быть такой Скрытый текст


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




Пост N: 2001
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.01.22 17:12. Заголовок: SergKis пишет: Еще ..


SergKis пишет:

 цитата:
Еще небольшие правки


OK

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




Пост N: 2002
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.01.22 10:44. Заголовок: Выложил январскую AN..


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

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

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

P.S. Архив уникодной сборки также обновил...

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




Пост N: 7553
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.01.22 15:33. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

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


 
* Updated: '2 TBrowse Demo' sample.
Contributed by Sergej Kiselev
(see demo2.prg in folder \samples\Advanced\Tsb_2tsb)

А так и должно быть когда ставим курсор на какую то строку то все значения в ней по всем полям
показаны белым по белому ?

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




Пост N: 4040
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.01.22 16:06. Заголовок: Dima пишет А так и д..


Dima пишет
 цитата:
А так и должно быть когда ставим курсор на какую то строку то все значения в ней по всем полям
показаны белым по белому ?


Положил на ftp картинку+prg+exe demo2.prg
смотри все ok!, собрал только что. Добавил в Title версию hmg

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




Пост N: 7555
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.01.22 16:35. Заголовок: SergKis я тебе тоже..


SergKis
я тебе тоже сложил картинку уже из собранного тобой модуля , ни чего не изменилось

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




Пост N: 4041
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.01.22 17:46. Заголовок: Dima Глянь еще вари..


Dima
Глянь еще вариант положил. Сделал выделенное цветом, вместо GetSysColor( COLOR_WINDOWTEXT )
 
oTsb1:aColor := { ;
{ CLR_FOCUSB, {|c,n,b| c := n, iif( b:nCell == n, -CLR_HRED, -RGB( 128, 225, 225 ) ) } }, ;
{ CLR_SELEF , CLR_BLACK }, ;
{ CLR_SELEB , {|c,n,b| c := n, iif( b:nCell == n, -CLR_BLUE, -RGB( 128, 225, 225 ) ) } } ;
}


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




Пост N: 7557
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.01.22 17:54. Заголовок: SergKis Тоже самое ..


SergKis
Тоже самое и сразу после старта , картинку сложил на фтп
Ладно , забей , мне сейчас особо не когда этим заниматься , просто
глянул что нового в релизе и вот попал на такое и сразу отписал.

PS
У меня windows 7 может с этим связано.....

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




Пост N: 4042
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.01.22 18:05. Заголовок: Dima Извини, но про..


Dima
Извини, но пробни еще вариант, положил. Сделал
 
oBrw1 := _TBrowse( oTsb1, "CUST1", "Brw_1", nY, nX, nW, nH )

oBrw1:SetColor( { CLR_TEXT }, { CLR_BLACK } )
oBrw1:SetColor( { CLR_SELEF }, { CLR_BLACK } )


PS
 цитата:
У меня windows 7 может с этим связано.....


Возможно это связано с массивом aColor, сталкивался ранее, что некоторые позиции цветов из него не корректно брались или перекрывались.

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




Пост N: 7558
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.01.22 18:25. Заголовок: Картина не изменилас..


Картина не изменилась , могу кино сделать если нужно

В Demo.exe и Demo3.exe такая же бяка

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




Пост N: 7559
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.01.22 19:00. Заголовок: вот такую строчечку ..


вот такую строки добавил в нужных местах
oBrw1:SetColor( { CLR_FOCUSF }, { CLR_BLACK } )
oBrw2:SetColor( { CLR_FOCUSF }, { CLR_BLACK } )
и нормик

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




Пост N: 2003
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.01.22 21:23. Заголовок: Dima пишет: вот так..


Dima пишет:

 цитата:
вот такую строки добавил в нужных местах


Благодарю за наводку
Уже поправил небольшую опечатку в коде h_tbrowse.prg, завтра выложу новый инсталлятор для проверки...

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




Пост N: 2004
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 26.01.22 11:32. Заголовок: Выложил обновленный ..


Выложил обновленный инсталлятор сборки 22.01 с минимальными изменениями в файле h_tbrowse.prg

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




Пост N: 7560
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.01.22 11:54. Заголовок: gfilatov2002 Супер ..


gfilatov2002
Супер , только это не решило "проблему" , все по прежнему.

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




Пост N: 2005
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 26.01.22 12:15. Заголовок: Dima пишет: это не ..


Dima пишет:

 цитата:
это не решило "проблему"


Понятно
Благодарю за сообщение

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




Пост N: 2006
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 26.01.22 15:30. Заголовок: Снова обновил устано..


Снова обновил установщик сборки 22.01 для решения "проблемы" с цветом выделенного поля в функции _TBrowse().
У себя такой беды не наблюдаю (смотрел версии Win7, Win10).

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




Пост N: 7561
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.01.22 16:31. Заголовок: https://cloud.mail.r..


https://cloud.mail.ru/public/Mb9m/28ci6LJvk

У меня тема в винде обычная не Aero , хз может в этом дело

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




Пост N: 7200
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.01.22 18:26. Заголовок: Скачал последнюю вер..


Скачал последнюю версию МиниГуи.
У меня Win 8.1
Такого кино как у Димы - не наблюдаю.

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




Пост N: 7562
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.01.22 18:45. Заголовок: Andrey Так тема вин..


Andrey
Так тема винды там наверное Aero и её не сменить как и в Win10

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




Пост N: 7563
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.01.22 19:53. Заголовок: Чекнул интереса ради..


Чекнул интереса ради

Ежели установить Aero тему (любую) то проблемы нет
А если классическую то

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




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


Выложил 1-е обновление сборки 22.01 по адресу:

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

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

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




Пост N: 7210
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.01.22 13:03. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Выложил 1-е обновление сборки 22.01 по адресу:


Попробовал.
Просьба, при создании библиотеки SAMPLES\Advanced\Tsb_Viewer\Lib - саму библиотеку TsbViewer.lib
копировать автоматом в папку \MiniGUI\Lib
Чтобы потом можно было сразу обращаться к этой библиотеке.

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




Пост N: 7583
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 31.01.22 19:02. Заголовок: Andrey пишет: Прось..


Andrey пишет:

 цитата:
Просьба, при создании библиотеки SAMPLES\Advanced\Tsb_Viewer


Кстати тут те же косяки с данными под курсором и обратил внимание что они есть во всех примерах
где юзается _TBrowse

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




Пост N: 7214
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.01.22 22:47. Заголовок: Dima пишет: Кстати ..


Dima пишет:

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


Нет не видел. По тестирую у себя.

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




Пост N: 7585
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 31.01.22 23:12. Заголовок: Andrey пишет: Нет н..


Andrey пишет:

 цитата:
Нет не видел. По тестирую у себя.


Что бы время зря не тратил а то ведь скажешь что не читал , так вот читай мой пост в этой теме Пост N: 7563

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




Пост N: 4043
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.02.22 09:32. Заголовок: Dima пишет вот такую..


Dima пишет
 цитата:
вот такую строки добавил в нужных местах
oBrw1:SetColor( { CLR_FOCUSF }, { CLR_BLACK } )
oBrw2:SetColor( { CLR_FOCUSF }, { CLR_BLACK } )
и нормик


Это согласуется\работает с "Пост N: 7563" ?

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




Пост N: 7586
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.02.22 09:55. Заголовок: SergKis пишет: Это ..


SergKis пишет:

 цитата:
Это согласуется\работает с "Пост N: 7563" ?


Да работает нормально если такие строки есть

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




Пост N: 4044
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.02.22 10:15. Заголовок: Dima Уточню. Такие..


Dima
Уточню.
Такие строки не работают с указанным CLR_SELEF, CLR_FOCUSF в oBrw1 ?
 
oTsb1:aColor := { ;
{ CLR_FOCUSF, CLR_BLACK }, ;

{ CLR_FOCUSB, {|c,n,b| c := n, iif( b:nCell == n, -CLR_HRED, -RGB( 128, 225, 225 ) ) } }, ;
{ CLR_SELEF , CLR_BLACK }, ;

{ CLR_SELEB , {|c,n,b| c := n, iif( b:nCell == n, -CLR_BLUE, -RGB( 128, 225, 225 ) ) } } ;
}

а такой вариант работает с "Пост N: 7563" ?
oBrw1:SetColor( { CLR_FOCUSF }, { GetSysColor( COLOR_WINDOWTEXT ) } )
oBrw2:SetColor( { CLR_FOCUSF }, { GetSysColor( COLOR_WINDOWTEXT ) } )


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




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


SergKis пишет:

 цитата:
а такой вариант работает с "Пост N: 7563" ?
oBrw1:SetColor( { CLR_FOCUSF }, { GetSysColor( COLOR_WINDOWTEXT ) } )
oBrw2:SetColor( { CLR_FOCUSF }, { GetSysColor( COLOR_WINDOWTEXT ) } )


Работает !

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




Пост N: 7588
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.02.22 10:21. Заголовок: SergKis пишет: oTs..


SergKis пишет:

 цитата:
oTsb1:aColor := { ;
{ CLR_FOCUSF, CLR_BLACK }, ;
{ CLR_FOCUSB, {|c,n,b| c := n, iif( b:nCell == n, -CLR_HRED, -RGB( 128, 225, 225 ) ) } }, ;
{ CLR_SELEF , CLR_BLACK }, ;
{ CLR_SELEB , {|c,n,b| c := n, iif( b:nCell == n, -CLR_BLUE, -RGB( 128, 225, 225 ) ) } } ;
}


Не работает

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




Пост N: 4045
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.02.22 12:48. Заголовок: Dima Будет время, г..


Dima
Будет время, глянь на ftp пример, сделал с трассировкой в _msglog.txt и кинь его обратно (свой с 7-ки), пожалуйста

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




Пост N: 7589
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.02.22 12:56. Заголовок: Пример я не пересоби..


Пример я не пересобирал и запустил как есть и все кажет нормально в то время смотрю что в сырце закоментированы строки
//oBrw2:SetColor( { CLR_SELEF }, { CLR_BLACK } )
то есть как ты собирал EXE я не знаю с коментом этих строк или нет
_msglog.txt закинул

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




Пост N: 4046
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.02.22 13:12. Заголовок: Dima пишет Пример я ..


Dima пишет
 цитата:
Пример я не пересобирал и запустил как есть и все кажет нормально в то время смотрю что в сырце закоментированы строки
//oBrw2:SetColor( { CLR_SELEF }, { CLR_BLACK } )


Собран пример без этих строк, т.е. с
 
DEFAULT aColor := { ;
{ CLR_FOCUSF, GetSysColor( COLOR_WINDOWTEXT ) }, ;
{ CLR_FOCUSB, {|c,n,b| c := n, iif( b:nCell == n, -CLR_HRED, -RGB( 128, 225, 225 ) ) } }, ;
{ CLR_SELEF , GetSysColor( COLOR_WINDOWTEXT ) }, ;
{ CLR_SELEB , {|c,n,b| c := n, iif( b:nCell == n, -CLR_BLUE, -RGB( 128, 225, 225 ) ) } } }

вывел в лог значения цветов на разных этапах. По идее у тебя должно было НЕ работать, а отработало правильно и :nClrFore -> 0
Может Aero стоит ?

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




Пост N: 7590
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.02.22 13:13. Заголовок: SergKis пишет: Може..


SergKis пишет:

 цитата:
Может Aero стоит ?


Не стоит , не люблю я его

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




Пост N: 7591
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.02.22 13:13. Заголовок: Счас пробну пересобр..


Счас пробну пересобрать пример

Пересобрал и снова лажа......

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




Пост N: 7592
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.02.22 13:15. Заголовок: закинул новый LOG на..


закинул новый LOG на фтп

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




Пост N: 4047
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.02.22 13:19. Заголовок: На твоей сборке ..


На твоей сборке
? hb_enumindex(oc), oc:nClrFore, oc:nClrFocuFore, oc:nClrSeleFore
дает
1 0 16777215 0
вместо
1 0 0 0
и массив цветов в тсб такой
Brw_1 ARRAY[20] {0, 16777215, 0, 13160660, 16777215, {|| ... }, 0, 16777215, 0, 13160660, 0, {|| ... }, 0, 13160660, 8421504, 0, 13160660, 0, 13160660, 255}
где цветом должен быть 0


пример такой, для ясности другим Скрытый текст


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




Пост N: 7593
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.02.22 13:22. Заголовок: я сырцы не трогал , ..


я сырцы не трогал , ни примера ни самих сырцов MG
Григорий выложил обнову MG и я его накатил на то что есть , так всегда делаю

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




Пост N: 4048
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.02.22 13:33. Заголовок: Dima пишет я сырцы н..


Dima пишет
 цитата:
я сырцы не трогал


тут еще одна интересная штука
? procname(), GetSysColor( COLOR_WINDOWTEXT ), CLR_BLACK
дает в лог
MAIN 0 0
а в массив цветов попало уже др. значение (выше цветом выделено)
? "Brw_1", oBrw1:aColors, hb_valtoexp(oBrw1:aColors)
не понятка, т.к. в h_tbrowse.prg из aColors => aTmpColor простой перенос 20 элементов
 
IF aColors != NIL
IF HB_ISARRAY( aColors ) .AND. Len( aColors ) > 0 .AND. HB_ISARRAY( aColors[ 1 ] )
FOR EACH aClr IN aColors
IF HB_ISNUMERIC( aClr[ 1 ] ) .AND. aClr[ 1 ] > 0 .AND. aClr[ 1 ] <= Len( aTmpColor )
aTmpColor[ aClr[ 1 ] ] := aClr[ 2 ]
ENDIF
NEXT
ELSE
AEval( aColors, {| bColor, nEle | aTmpColor[ nEle ] := bColor } )

ENDIF
ENDIF

цветной кусок работает
PS
Я TsBrowse.lib пересобирал, но исп. только _logfile() для просмотра как данные из входного aColors => в aTmpColor[20] элементов переходят, потом убрал.

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




Пост N: 4049
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.02.22 13:50. Заголовок: Dima Положил на ftp..


Dima
Положил на ftp свою TsBrowse.lib, попробуй с ней собрать пример

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




Пост N: 7594
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.02.22 14:02. Заголовок: SergKis пишет: Поло..


SergKis пишет:

 цитата:
Положил на ftp свою TsBrowse.lib, попробуй с ней собрать пример


Все работает штатно и правильно !

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




Пост N: 4050
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.02.22 14:23. Заголовок: Dima пишет Все работ..


Dima пишет
 цитата:
Все работает штатно и правильно !


Спасибо
Осталось тебе у себя пересобрать либу, запустив TsBrowse\MakeLib.bat и проверить сборку на примере

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




Пост N: 7595
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.02.22 14:24. Заголовок: Пересобрал , снова л..


Пересобрал , снова лажа.......

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




Пост N: 7596
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.02.22 14:26. Заголовок: видать Григорий что ..


видать Григорий что то не досмотрел и твои сырцы не совпадают с его

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




Пост N: 4051
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.02.22 14:32. Заголовок: Dima Так я не менял..


Dima
Так я не менял сырцы, как вчера развернул, потыкал _logfile(), убрал и все.
Положил h_tbrowse.prg, попробуй у себя с ним собрать.

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




Пост N: 7597
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.02.22 14:33. Заголовок: там и размеры разные..


там и размеры разные по ходу
счас сделаю

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




Пост N: 7598
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.02.22 14:36. Заголовок: чёт меня этот цирк у..


чёт меня этот цирк уже утомил....
пересобрал с твоим h_tbrowse.prg , собрал пример , работает НЕ правильно
беру твой tsbrowse.lib и собираю с ним , все ОТЛИЧНО

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




Пост N: 4052
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.02.22 14:41. Заголовок: Dima пишет чёт меня ..


Dima пишет
 цитата:
чёт меня этот цирк уже утомил....


Извини , сам не пойму, в чем дело (у меня win10).
Подождем, может само пройдет

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




Пост N: 7599
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.02.22 14:43. Заголовок: SergKis пишет: Подо..


SergKis пишет:

 цитата:
Подождем, может само пройдет


Само не пройдет ты ведь чудесно это понимаешь
Счас выложу сырцы TS к тебе , сравни со своими пожалуйста

Сложил

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




Пост N: 4053
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.02.22 15:03. Заголовок: Dima Есть разница п..


Dima
Есть разница по 1-му файлу h_controlmisc2.prg
Положил его.
Пробни

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




Пост N: 7600
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.02.22 15:59. Заголовок: SergKis пишет: Есть..


SergKis пишет:

 цитата:
Есть разница по 1-му файлу h_controlmisc2.prg


Сергей вот теперь всё отлично работает
Спасибо !

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




Пост N: 4054
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.02.22 16:48. Заголовок: Dima Нашел, где ..


Dima
Нашел, где "собака порылась"
26.01 с утра сделал правку, отвлекли и я забыл пометить ее (пометки смотрю - их нет, думаю и правок нет).
Тут строку вставил
 
DEFAULT aColor := { ;
{ CLR_FOCUSF, GetSysColor( COLOR_WINDOWTEXT ) }, ;

{ CLR_FOCUSB, {|c,n,b| c := n, iif( b:nCell == n, -CLR_HRED, -RGB( 128, 225, 225 ) ) } }, ;
{ CLR_SELEF , GetSysColor( COLOR_WINDOWTEXT ) }, ;
{ CLR_SELEB , {|c,n,b| c := n, iif( b:nCell == n, -CLR_BLUE, -RGB( 128, 225, 225 ) ) } } }

Я же говорил, надо подождать и само пройдет

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




Пост N: 7601
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.02.22 16:54. Заголовок: :sm54: :sm36:..




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




Пост N: 2009
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.02.22 17:36. Заголовок: Всем кому это интересно :)


Завершена подготовка 2-го обновления сборки 22.01, которое планируется опубликовать на следующей неделе.

Что нового:
- исправлена ошибка: при использовании команды SET WINDOW MAIN OFF не обрабатывались события окон ON SIZE и ON MAXIMIZE;
- добавлены команды для отправки почты с вложениями и с поддержкой SSL протокола, также можно получать уведомление о прочтении письма;
- добавлена возможность получить номер строки, нажатой при выполнении события ON CHECKBOXCLICKED в гриде со стилем CHECKBOXES;
- добавлены два новых примера.

Если у вас есть дополнения для этого обновления, то я с удовольствием их добавлю в библиотеку

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

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




Пост N: 7219
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.02.22 07:49. Заголовок: Просьба, при создани..


Просьба, при создании библиотеки SAMPLES\Advanced\Tsb_Viewer\Lib - саму библиотеку TsbViewer.lib
копировать автоматом в папку \MiniGUI\Lib
Чтобы потом можно было сразу обращаться к этой библиотеке.

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




Пост N: 1832
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 11.02.22 10:20. Заголовок: Andrey пишет: копир..


Andrey пишет:

 цитата:
копировать автоматом в папку \MiniGUI\Lib

может сначала выясним будут ли её использовать ?
Поясню
Одно дело как обучающий пример, если понравилось, сделал библиотеку сам и пользуй. Другое , это примеры пихать в основу библиотек пакета.
Встроенный sbrowse() более чем достаточно чтоб глянуть что попало в выборку. Для работы с базами полно внешних утилит, которые в добавок умеют несравнимо больше и удобнее.

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




Пост N: 4063
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.02.22 18:01. Заголовок: gfilatov2002 Неболь..


gfilatov2002
Небольшой пример с _TBrowse() с параметрами из ini https://TransFiles.ru/wa3ih

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




Пост N: 7220
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.02.22 18:24. Заголовок: Haz пишет: Другое ,..


Haz пишет:

 цитата:
Другое , это примеры пихать в основу библиотек пакета.


Это просто отдельная библиотека на базе ТСБ и больше ничего.
Просто каждый раз ручками переписывать TsbViewer.lib в общедоступный каталог для сборки - дело утомительно.
Я прошу просто подправить батники и всё, для удобства кто захочет пользоваться этой библиотекой.

Внешние утилиты использовать просто утомительно, собрать свою прогу, запустить, получить dbf, завершить прогу, перейти в папку с созданной базой, запустить внешнюю прогу с нужной базой - слишком много лишних телодвижений.
А так просто одна команда в исходнике и всё !!!

Пользоваться или нет этой библиотекой это дело личное.
Я старался сделать TsbViewer более удобным для работы с базой, у встроенного sbrowse() нет таких функций.

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




Пост N: 2010
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 11.02.22 18:27. Заголовок: SergKis пишет: прим..


SergKis пишет:

 цитата:
пример с _TBrowse() с параметрами из ini


Супер
Большое спасибо за наглядный пример

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




Пост N: 4064
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.02.22 18:31. Заголовок: gfilatov2002 В прим..


gfilatov2002
В примере допустил неточность, изменил :HeightHead после END TBROWSE - это может приводить к дырке внизу
Вот исправленный текст Скрытый текст


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




Пост N: 2011
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 11.02.22 18:38. Заголовок: SergKis пишет: испр..


SergKis пишет:

 цитата:
исправленный текст


OK

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




Пост N: 1833
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 11.02.22 19:32. Заголовок: Andrey пишет: Прост..


Andrey пишет:

 цитата:
Просто каждый раз ручками переписывать TsbViewer.lib в общедоступный каталог для сборки - дело утомительно


Ну так один раз положил в папку библиотек минигуи , сам, ручками и ничего прописывать больше не надо. Зачем всем то это счастье ? Более того , при обновлении минигуи поверх, свои библиотеки там остаются.

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




Пост N: 1834
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 11.02.22 19:42. Заголовок: Andrey пишет: у вс..


Andrey пишет:

 цитата:
у встроенного sbrowse() нет таких функций.

они там не нужны. Задача sbrowse() визуально оценить выборку и может быть чуть чуть подправить. Как отдельный пример, да хорошо, но как пример. Внешние утилиты все же не заменит. Нет sql нет удалённого подключения, нет изменения структур на лету, нет групповых операций . Да и незачем свой проект нагружать лишним кодом ради того чтобы пару раз посмотреть. Я уже не говорю про дыру безопасности в проекте

Ps. Почти у всех есть свои библиотеки, это не повод под них батник править.

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




Пост N: 4065
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.02.22 15:51. Заголовок: gfilatov2002 Немног..


gfilatov2002
Немного модифицировал пример, добавив в ini события для клавиш
demo.ini - Скрытый текст


demo.prg - Скрытый текст


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




Пост N: 4066
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.02.22 17:46. Заголовок: PS. Еще вариант этог..


PS. Еще вариант этого же решения с событиями, кому интересно
demo.ini - Скрытый текст

demo.prg - Скрытый текст


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




Пост N: 2012
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.02.22 19:01. Заголовок: SergKis пишет: моди..


SergKis пишет:

 цитата:
модифицировал пример, добавив в ini события для клавиш


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

SergKis пишет:

 цитата:
вариант этого же решения с событиями, кому интересно


Надеюсь, что эти примеры будут кому-нибудь полезны

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




Пост N: 7222
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.02.22 19:28. Заголовок: Haz пишет: Почти у ..


Haz пишет:

 цитата:
Почти у всех есть свои библиотеки, это не повод под них батник править.


Может быть и не повод, но большее кол-во инструментов для МиниГуи будет полезней, особенно для новичков.
Не смотря на ограниченность TsbViewer, я делал его под свою часто используемую работу с базой.
Такого не было в МиниГуи, вот и сделал в качестве инструмента для баз.
Больше никто не предлагал подобный функционал для баз, только внешние утилиты.
Если кто-то делал инструмент работы с базой - было бы полезно выложить его в Минигуи, для всех.
А то пока наработаешь свои библиотеки и примеры для МиниГуи - года 3-4 пройдёт...

gfilatov2002 пишет:

 цитата:
Надеюсь, что эти примеры будут кому-нибудь полезны


Ещё как нужны.
Работа с событиями очень нужная вещь в МиниГуи, особенно для больших проектов.
Прога перестаёт падать, если использовать события, а не функции.

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




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


Andrey пишет:

 цитата:
при создании библиотеки SAMPLES\Advanced\Tsb_Viewer\Lib библиотеку TsbViewer.lib копировать автоматом в папку \MiniGUI\Lib


Именно так и сделал

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




Пост N: 4067
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.02.22 20:29. Заголовок: gfilatov2002 пишет Н..


gfilatov2002 пишет
 цитата:
Надеюсь, что эти примеры будут кому-нибудь полезны


Если подключить работу с hrb, как в LetoDbf или hbedit, то обработчики событий можно делать в hrb. Будет возможность, если кому то надо, сделать утилиту похожую на DBCH как у А. Кресина.

PS.
Не увидел bat для сборки letoudf.hrb из LetoDbf\SERVER\SOURCE\letoudf.prg, что бы подменить на свой вариант letoudf.prg
PS2.
Есть более поздняя правка LetoDbf (2021-09-21 19:49 UTC+0100 Aleksander Czajczynski (hb fki.pl)),
чем по ссылке родной, по адресу https://github.com/alcz/LetoDBf
Может этот вариант собрать ? Предыдущий вариант так же был от Aleksander Czajczynski

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




Пост N: 2014
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.02.22 20:41. Заголовок: SergKis пишет: Есть..


SergKis пишет:

 цитата:
Есть более поздняя правка LetoDbf (2021-09-21 19:49 UTC+0100 Aleksander Czajczynski


Именно этот вариант используется при сборке LetoDbf для библиотеки Минигуи.

SergKis пишет:

 цитата:
Не увидел bat для сборки letoudf.hrb


Если правильно помню, этот файл был собран вместе с бинарником сервера (но могу ошибаться).

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




Пост N: 4068
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.02.22 21:07. Заголовок: gfilatov2002 пишет И..


gfilatov2002 пишет
 цитата:
Именно этот вариант используется при сборке LetoDbf для библиотеки Минигуи.


OK!

 цитата:
Если правильно помню, этот файл был собран вместе с бинарником сервера (но могу ошибаться).


В целом да (buildall.bat), но строка нужная это hbmk2 letoudf и нужный letoudf.hbp есть
 

# output path does not work with .hrb ?
-o../bin

-W3
-es0
-n
-gh

letoudf.prg

Наверно, можно применить ..\..\..\BATCH\hbmk2.bat letoudf.hbp

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




Пост N: 4069
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.02.22 14:15. Заголовок: gfilatov2002 В заве..


gfilatov2002
В завершении темы ini + _TBrowse(), небольшой пример на 2-а тсб https://TransFiles.ru/xzgzj

PS. Пропустил правку, поправьте
ON RELEASE ( (This.Cargo:oBrw:cAlias)->( dbCloseAllArea() ) )

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




Пост N: 2015
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.02.22 18:53. Заголовок: SergKis пишет: небо..


SergKis пишет:

 цитата:
небольшой пример на 2-а тсб


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

SergKis пишет:

 цитата:
Пропустил правку, поправьте


Поправил, конечно

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




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


gfilatov2002
Извините, не удержался и кнопки в пример добавил (маюсь от безделья сегодня) https://TransFiles.ru/s2xux

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




Пост N: 2016
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.02.22 10:48. Заголовок: Выложил 2-е обновлен..


Выложил 2-е обновление сборки 22.01 по адресу:

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

Обновил также уникод-архив...

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




Пост N: 4075
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.22 15:16. Заголовок: gfilatov2002 Можно ..


gfilatov2002
Можно правку в i_status.ch сделать
 
#xcommand STATUSITEM [ <cMsg> ] ;
[ WIDTH <nSize> ] ;
[ ACTION <uAction> ] ;
[ ICON <cBitmap> ] ;
[ STYLE ] [ <style:FLAT,RAISED> ] ;
[ TOOLTIP <cToolTip> ] ;
[ BACKCOLOR <backcolor> ] ;
[ FONTCOLOR <fontcolor> [ <c: CENTERALIGN> ] [ <r: RIGHTALIGN> ] ] ;
[ <default: DEFAULT> ] ;
=> ;
_DefineItemMessage( "STATUSITEM", , 0, 0, <cMsg>, iif( Valtype( <uAction> ) == "B" , <uAction> , <{uAction}> ), <nSize>, 0, ... )

тогда такой код можно использовать
FOR i := 1 TO k
w := aStatus[ i ]
IF HB_ISNUMERIC( w )
IF w < 1; w := Int( This.ClientWidth * w )
ENDIF
j := "_wPost("+hb_ntos(nPost)+",,"+hb_ntos(i)+")"
IF empty( w ) ; STATUSITEM '' ACTION hb_MacroBlock( j )
ELSE ; STATUSITEM '' WIDTH w ACTION hb_MacroBlock( j )
ENDIF
ELSEIF HB_ISCHAR( w )
ENDIF
NEXT

В _SetFormAction() и _SetControlAction() нет варианта для StatusItem ставить ACTION

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




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


SergKis пишет:

 цитата:
правку в i_status.ch сделать


Это можно сделать, используя псевдо-функцию

 цитата:
_SetStatusItemAction( <item>, <action>, <ParentFormHandle> )


которая вызывает реальную функцию

 цитата:
_SetStatusItemProperty( <item>, <value>, <ParentHandle>, STATUS_ITEM_ACTION )



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




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


gfilatov2002 пишет
 цитата:
используя псевдо-функцию _SetStatusItemAction( <item>, <action>, <ParentFormHandle> )


Спасибо Работает, т.е.
LOCAL i, j, k, w, h := GetFormHandle( This.Name )
...
_SetStatusItemAction( i, hb_MacroBlock( j ), h )

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




Пост N: 4077
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.02.22 17:02. Заголовок: gfilatov2002 Неболь..


gfilatov2002
Небольшая добавка
 
METHOD MoveColumn( nColPos, nNewPos ) CLASS TSBrowse
...
IF HB_ISCHAR( nColPos ) ; nColPos := ::nColumn( nColPos, .T. )
ENDIF

If ! Empty( nColPos ) .AND. ! Empty( nNewPos ) .AND. ;
...


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




Пост N: 2018
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.02.22 21:10. Заголовок: SergKis пишет: Небо..


SergKis пишет:

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


OK

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




Пост N: 2020
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.02.22 09:03. Заголовок: Выложил 3-й апдейт с..


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

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

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





Пост N: 221
Зарегистрирован: 17.10.05
ссылка на сообщение  Отправлено: 02.03.22 15:36. Заголовок: Ошибка при линковке


Скачал последний UPDATE. При линковке выдает ошибку. Может кто даст ссылку на пред.версию, а то у Григория на сайте только текущая.
[1]:iLink32.Exe -Gn -aa -Tpe -s @zpW.bcl
Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland
Error: Unresolved external '_HB_FUN_HPDF_NEW' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_SETCOMPRESSIONMODE' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_USEUTFENCODINGS' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_SETCURRENTENCODER' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_ADDPAGE' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_PAGE_SETSIZE' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_PAGE_GETHEIGHT' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_PAGE_GETWIDTH' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_SAVETOFILE' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_RESETERROR' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_FREE' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_LOADPNGIMAGEFROMFILE' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_LOADJPEGIMAGEFROMFILE' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_PAGE_DRAWIMAGE' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_SETINFOATTR' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_SETINFODATEATTR' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_GETERROR' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf

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




Пост N: 4088
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.03.22 16:14. Заголовок: krutoff Тут https:/..

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





Пост N: 222
Зарегистрирован: 17.10.05
ссылка на сообщение  Отправлено: 03.03.22 11:36. Заголовок: SergKis пишет: Тут ..


SergKis пишет:

 цитата:
Тут https://TransFiles.ru/mn61y

Спасибо, Сергей! Пред.версия идет без ошибок.
Григорий из Одессы, ему уже, конечно, не до того. Нас в Киеве тоже бомбят, особенно по ночам.

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




Пост N: 2022
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 07.03.22 12:54. Заголовок: Выложил 5-й апдейт с..


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

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

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




Пост N: 2025
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.03.22 22:00. Заголовок: Выложил срочное 7-е ..


Выложил срочное 7-е обновление для исправления ошибки, внесенной в сборке 21.11
Также обновил библиотеку PageScript до новой 4-й версии с полноценной поддержкой PDF (создание, просмотр, печать и экспорт текста).

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




Пост N: 1838
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 18.03.22 15:44. Заголовок: Абсолютно тоже на по..


Абсолютно тоже на последнем 7-м обновлении, вернулся на 22.01 (Update 2)

krutoff пишет:

 цитата:
Скачал последний UPDATE. При линковке выдает ошибку. Может кто даст ссылку на пред.версию, а то у Григория на сайте только текущая.
[1]:iLink32.Exe -Gn -aa -Tpe -s @zpW.bcl
Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland
Error: Unresolved external '_HB_FUN_HPDF_NEW' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_SETCOMPRESSIONMODE' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_USEUTFENCODINGS' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_SETCURRENTENCODER' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_ADDPAGE' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_PAGE_SETSIZE' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_PAGE_GETHEIGHT' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_PAGE_GETWIDTH' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_SAVETOFILE' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_RESETERROR' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_FREE' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_LOADPNGIMAGEFROMFILE' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_LOADJPEGIMAGEFROMFILE' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_PAGE_DRAWIMAGE' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_SETINFOATTR' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_SETINFODATEATTR' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf
Error: Unresolved external '_HB_FUN_HPDF_GETERROR' referenced from D:\MINIGUI\LIB\MINIGUI.LIB|h_savepdf



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




Пост N: 2027
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 20.03.22 11:21. Заголовок: Haz пишет: тоже на ..


Haz пишет:

 цитата:
тоже на последнем 7-м обновлении


Игорь,

Это не удивительно, поскольку в библиотеку была добавлена возможность сохранения печатных отчетов в формате PDF.
Решение для этой проблемы - тривиальное: надо добавить библиотеки поддержки HaruPDF для линковки в ваш сценарий сборки.

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




Пост N: 1839
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 20.03.22 11:50. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Решение для этой проблемы - тривиальное: надо добавить библиотеки поддержки HaruPDF для линковки в ваш сценарий сборки.


знать бы сразу какие именно. На работе подбором некогда заниматься, а дома методом тыка выяснил , что со следующим набором собирается :
 
<Library Filename="[harbour]png.lib"/>
<Library Filename="[harbour]PdfPrinter.lib"/>
<Library Filename="[harbour]libhpdf.lib"/>
<Library Filename="[harbour]hbhpdf.lib"/>
<Library Filename="[harbour]hmg_hpdf.lib"/>


пошел во всех проектах скрипты сборки править

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




Пост N: 4103
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.03.22 06:22. Заголовок: gfilatov2002 пишет В..


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


Unicode 22.01 осталась Update 3
До update 7 надо подождать или так останется ?

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




Пост N: 2028
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 21.03.22 12:28. Заголовок: SergKis пишет: До u..


SergKis пишет:

 цитата:
До update 7 надо подождать


Сегодня сделаю и отпишусь

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




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


Обновил Unicode-архив до 7-го обновления библиотеки.

Также для всех, кто поддержал этот проект материально, доступны следующие Unicode-версии:

-------------------------------------------------------------
Minigui Ex Package (build date: 17.03.2022)
Download links: http://hmgextended.com/files/PRIVATE
-------------------------------------------------------------

Components versions:
--------------------

Harbour MiniGUI Extended Edition 22.01 (Update 7)

Harbour 3.2.0dev (r2104281802)

Harbour Make (hbmk2) 3.2.0dev (r2021-04-28 18:02)

gcc (GCC with MCF thread model, built by LH_Mouse.) 11.2.1 20220307

и

-------------------------------------------------------------
Minigui Ex 64 Package (build date: 17.03.2022)
Download links: http://hmgextended.com/files/PRIVATE
-------------------------------------------------------------

Components versions:
--------------------

Harbour MiniGUI Extended Edition 22.01 (Update 7)

Harbour 3.4.0dev (a6e3e4b) (2021-11-16 00:36)

Harbour Make (hbmk2) 3.4.0dev (a6e3e4b) (2021-11-16 00:36)

gcc (MinGW-W64 x86_64-posix-seh, built by Brecht Sanders) 11.2.1 20211106

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




Пост N: 2030
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 31.03.22 08:07. Заголовок: Выложил последнюю сб..


Выложил последнюю сборку 22.03

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


 цитата:
* The Monthcal control may manage a 'FirstDayOfWeek' property.
It was a postponed modification.

* The GRID control supports the optional ON INPLACEEDITEVENT event.
The following properties are available for OnInplaceEditEvent
procedure:
- This.IsInplaceEditEventInit: return .T. or .F.
- This.IsInplaceEditEventRun: return .T. or .F.
- This.IsInplaceEditEventFinish: return .T. or .F.
- This.InplaceEditGridName: for example, 'Grid_1'
- This.InplaceEditParentName: for example, 'Form_1'
- This.InplaceEditControlHandle: Handle of InplaceEdit ColumnControl,
eg. handle of TEXTBOX, DATEPICKER, COMBOBOX, SPINNER, CHECKBOX.
- This.InplaceEditControlIndex: return internal controls index.

* Updated Harbour Compiler 3.2.0dev:
- hbrdd and hbrtl were compiled with default switch -gc3 instead -gc0
for acceleration of the Harbour core.

* Updated the TSBrowse and SQLite3 libraries.

* Added the new interesting samples and updated some examples.



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

Желаю всем только мира

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




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


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

Поздравляю всех верующих с Благовещением Пресвятой Богородицы


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



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




Пост N: 2033
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.04.22 08:58. Заголовок: Выложил 2-й апдейт с..


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

click here

Желаю всем только мира...

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





Пост N: 83
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 15.04.22 07:58. Заголовок: Выложил 2-й апдейт с..


gfilatov2002 пишет:

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



Мужики .... с 22 сборки в TBROWSE с некоторыми цифрами во такая хрень началась (фото ниже) ...
это только у меня и как это исправить ?



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




Пост N: 4118
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.04.22 11:59. Заголовок: Alex_Cher пишет с 22..


Alex_Cher пишет
 цитата:
с 22 сборки в TBROWSE с некоторыми цифрами во такая хрень началась


Преобразования все в строку происходят в ф-ии cValToChar(...), для цифр это hb_ntos(...). Это цифры, наверно, не из dbf. Поставьте в колонку формат вывода oCol:cPicture := "99999999.99"

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





Пост N: 84
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 18.04.22 08:32. Заголовок: SergKis пишет: Alex..


SergKis пишет:

 цитата:
Alex_Cher пишет
цитата:
с 22 сборки в TBROWSE с некоторыми цифрами во такая хрень началась


Преобразования все в строку происходят в ф-ии cValToChar(...), для цифр это hb_ntos(...). Это цифры, наверно, не из dbf. Поставьте в колонку формат вывода oCol:cPicture := "99999999.99"



Уважаемый SergKis это цифры чисто из DBF ( пример C:\MiniGUI\SAMPLES\Advanced\Tsb_2tables те же проблемы), вопрос -
почему это началось с сборки 22 ( в 21 все нормально) ?
да поставить формат можно, но зачем этот линий гемор ...?
и почему все молчат, мужики проверьте свои программы на TBROWSE .... !

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




Пост N: 2034
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 18.04.22 10:13. Заголовок: Alex_Cher пишет: по..


Alex_Cher пишет:

 цитата:
почему это началось с сборки 22


Это был экспериментальный код в функции cValToChar().
Уже поправил для следующего обновления библиотеки, которое планируется выпустить на этой неделе

Alex_Cher пишет:

 цитата:
почему все молчат


Видимо, не все используют TBROWSE либо, как вариант, еще не обновились до версии 22.03

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




Пост N: 4119
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.04.22 11:26. Заголовок: Alex_Cher пишет да п..


Alex_Cher пишет
 цитата:
да поставить формат можно, но зачем этот линий гемор ...?


Поставить Picture колонке, на мой взгляд, это хороший стиль написания кода, т.к. уменьшается вероятность таких ситуевин, как произошло у вас, с течением времени, в котором живет программа. Не зависимо (почти) от смены версий, т.к. проверить все режимы работы программы нет возможности (надо иметь базу с вариантами проверок всех алгоритмов, что мало реально). Версию unicode 22.03 я применил уже (у меня все на tsbrowse) и не заметил изменений, т.к. стоят Picture для цифровых полей (у них ставлю часто отрезание правых 0 в дробной части) и timestamp

gfilatov2002 пишет
 цитата:
Видимо, не все используют TBROWSE либо, как вариант, еще не обновились до версии 22.03


Обновился на unicode версии без update, как в однобайтовой hmg. Т.к. модуль не большой - 5 штук тсб, у меня полет нормальный

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




Пост N: 1845
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 18.04.22 11:31. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Видимо, не все используют TBROWSE либо, как вариант, еще не обновились


Многие уже по всем проектам :cPicture прописали т.к. слет шаблона по умолчанию произошел года 3 назад. Поэтому не заметили

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




Пост N: 7246
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.04.22 12:58. Заголовок: Haz пишет: Многие у..


Haz пишет:

 цитата:
Многие уже по всем проектам :cPicture прописали


Аналогично, тоже везде использую :cPicture !

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




Пост N: 2035
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 21.04.22 08:57. Заголовок: Всем кому это интересно


В "чистый" четверг выложил 3-й апдейт сборки 22.03 с учетом всех последних изменений и исправлений
click here



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




Пост N: 2037
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.05.22 10:14. Заголовок: Просто к сведению ;-)


Подготовил вторую бету для новой сборки 22.05

Кратко, что нового:
Скрытый текст

По видимому, до финального релиза этот список изменений кардинально не изменится.

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




Пост N: 2038
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 08.05.22 18:02. Заголовок: Подготовил третью бе..


Подготовил третью бету для новой сборки 22.05

Главное изменение:

 цитата:
* Enhanced: The IMAGE and LABEL controls support the optional ON RCLICK clause.
This clause specifies the action at the mouse right button click.
Notice that you should declare the SET CONTEXT MENU OFF command also.
Contributed by Grigory Filatov <gfilatov@gmail.com>
(see demo in folder \samples\Applications\MineSweeper)


Желаю всем МИРА и добра

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





Пост N: 85
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 09.05.22 08:18. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Подготовил третью бету для новой сборки 22.05



извиняюсь, может 22.03 ?

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




Пост N: 2039
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.05.22 19:29. Заголовок: Alex_Cher пишет: мо..


Alex_Cher пишет:

 цитата:
может 22.03 ?


Нет, речь шла о новой майской сборке

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





Пост N: 86
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 10.05.22 06:53. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:

Нет, речь шла о новой майской сборке



снова извиняюсь .., а откуда качать, там на http://hmgextended.com/files/CONTRIB/hmg-22.05-setup.exe
нет ничего ...?

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




Пост N: 2040
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.05.22 08:37. Заголовок: Alex_Cher пишет: а ..


Alex_Cher пишет:

 цитата:
а откуда качать


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

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




Пост N: 4125
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.05.22 18:41. Заголовок: gfilatov2002 правка..


gfilatov2002
правка, проскакивает cHeading == NIL (h_tbrowse.prg)
 
STATIC FUNCTION SetHeights( oBrw )
...
// Now for cells

nHHeight := oBrw:nHeightCell

FOR nEle := 1 TO Len( oBrw:aColumns )
...
IF ValType( cHeading ) == "C" .AND. At( Chr( 13 ), cHeading ) > 0 .OR. ;
ValType( cHeading ) == "M" .OR. oColumn:cDataType != NIL .AND. oColumn:cDataType == "M"

DEFAULT cHeading := ""

IF Empty( oBrw:nMemoHV )
IF At( Chr( 13 ), cHeading ) > 0
oBrw:nMemoHV := Len( hb_ATokens( cHeading, Chr( 13 ) ) )
ENDIF
ENDIF
DEFAULT oBrw:nMemoHV := 2
...


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




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


SergKis пишет:

 цитата:
правка


OK

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




Пост N: 4126
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.05.22 13:48. Заголовок: gfilatov2002 Я прав..


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

С выделенным цветом тексты в списке COMBOBOX ok, без ф-ии - кракозяблики

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




Пост N: 2042
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 18.05.22 14:22. Заголовок: SergKis пишет: COMB..


SergKis пишет:

 цитата:
COMBOBOXEX в unicode версии с utf8 строками не работает


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

Перекодировка этих строк в уникод происходит уже внутри COMBOBOXEX

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




Пост N: 4127
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.05.22 14:39. Заголовок: gfilatov2002 пишет Э..


gfilatov2002 пишет
 цитата:
Это сделано с учетом того, что эти строки могут быть получены из базы данных, которая м.б. для совместимости в формате ANSI.


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



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




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


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

click here

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




Пост N: 4128
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.05.22 13:19. Заголовок: gfilatov2002 В верс..


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

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




Пост N: 2044
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 23.05.22 13:50. Заголовок: SergKis пишет: В ве..


SergKis пишет:

 цитата:
В версии unicode ButtonEx Tooltip не отображает строку в utf8


Проверил на системе без установки кодовой страницы - Tooltip отображает строку в utf8 правильно.
Добавил в начало программы установку
set codepage to russian 
и получил кракозябры в тултипе, как и следовало ожидать.
Вывод: проверьте наличие этой установки у себя в коде

Также возможно следует добавить перед вызовом формы команду
set codepage to unicode


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




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


gfilatov2002 пишет
 цитата:
и получил кракозябры в тултипе, как и следовало ожидать


В начале программе стоит (больше нет установок codepage)
SET CODEPAGE TO UNICODE
RDDSETDEFAULT('DBFCDX')
SET OOP ON
В ф-ии кнопка формируется
 
...
? procname(), cObject, cTooltip, hb_utf8ToStr(cTooltip, 'RU1251')

DEFINE BUTTONEX &cObject
PARENT &cForm
ROW nRow
COL nCol
WIDTH nWidth
HEIGHT nHeight
ICON cResIco
CAPTION cCaption
ACTION Eval( bAction )
TOOLTIP cTooltip
VERTICAL lTextVertical
LEFTTEXT lTextLeft
FLAT .F.
FONTNAME cFont
FONTSIZE nFontSize
FONTBOLD lFontBold
FONTCOLOR aFontColor
BACKCOLOR aBACKCOLOR
UPPERTEXT .F.
NOHOTLIGHT .F.
NOXPSTYLE .T.
HANDCURSOR .T.
ONMOUSEHOVER ( SetProperty(ThisWindow.Name, this.name, "ICON", cResIco2), SetProperty(ThisWindow.Name, cObject, "fontcolor", aFontColorInvert ) )
ONMOUSELEAVE ( SetProperty(ThisWindow.Name, this.name, "ICON", cResIco) , SetProperty(ThisWindow.Name, cObject, "fontcolor", aFontColor) )
NOTABSTOP .F.
INVISIBLE lHide
END BUTTONEX

выделенная цветом строка дает правильное значение
cTooltip - кодировка utf8
hb_utf8ToStr(cTooltip, 'RU1251') - кодировка 1251
cTooltip задается в коде программы на кнопки (prg все в utf8)
aObj3But[2,13] := 'Копировать файлы из папки 1 в папку 2' // подсказка
aObj3But[3,13] := 'Копировать файлы из папки 2 в папку 1' // подсказка


PS
cTooltip := hb_utf8ToStr(cTooltip, 'RU1251') и DEFINE BUTTONEX &cObject ...
выводит Tooltip правильно (версия hmg 22.03.0 unicode)

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




Пост N: 2046
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 31.05.22 08:20. Заголовок: Выложил 2-й апдейт с..


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

click here

Желаю всем удачи...

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




Пост N: 2047
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.06.22 10:21. Заголовок: Выложил последнюю сб..


Выложил последнюю сборку 22.06

click here

Желаю всем МИРА и добра

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




Пост N: 2048
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 05.07.22 10:29. Заголовок: Выложил 1-е обновлен..


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

См. ссылку для выкачки в посте выше

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




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


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

click here

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




Пост N: 2051
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 27.07.22 12:58. Заголовок: Завершена подготовка..


Завершена подготовка новой сборки 22.07, которая будет опубликована завтра.

Что нового:
- глобальный пересмотр Си-кода с использованием макросов вида hmg_par_* / hmg_ret_* и макросов унификации Си-типов.

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

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




Пост N: 2052
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 28.07.22 14:18. Заголовок: Всем кому это интересно


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

click here

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




Пост N: 7258
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.07.22 07:50. Заголовок: Поставил новую верси..


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

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




Пост N: 4144
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.07.22 17:23. Заголовок: gfilatov2002 Неболь..


gfilatov2002
Небольшие правки Скрытый текст


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




Пост N: 2053
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 31.07.22 19:26. Заголовок: SergKis пишет: Небо..


SergKis пишет:

 цитата:
Небольшие правки


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

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




Пост N: 2054
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.08.22 09:56. Заголовок: Выложил 2-е обновлен..


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

click here

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




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


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

click here

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




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


Завершена подготовка новой сборки 22.09, которая планируется к выпуску на следующей неделе

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

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

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




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


Как и обещал, выложил финальную сборку 22.09

Нажмите здесь, чтобы скачать

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




Пост N: 4151
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.09.22 14:22. Заголовок: gfilatov2002 unicod..


gfilatov2002
unicode версия живет или нет ?

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




Пост N: 2059
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.09.22 15:42. Заголовок: SergKis пишет: unic..


SergKis пишет:

 цитата:
unicode версия живет


Только что обновил архив для этой сборки по старому адресу

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




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


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


Спасибо

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




Пост N: 4160
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.22 19:36. Заголовок: gfilatov2002 Сборка..


gfilatov2002
Сборка версии unicode файлом MakeAllMiniguiLibs.bat выдает протокол с бяками
Протокол Скрытый текст

После этого сборка примеров дает
 
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
OBJ\demo.c:
OBJ\_hbmkaut_demo.c:
Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland
Error: Unresolved external '_WideToAnsi' referenced from C:\MINIGUIUNICODE\LIB\MINIGUI.LIB|c_windowsAPI
Error: Unresolved external '_AnsiToWide' referenced from C:\MINIGUIUNICODE\LIB\MINIGUI.LIB|c_windowsAPI
Error: Unresolved external '_HB_FUN_HMG_CREATEFILE_UTF16LE_BOM' referenced from C:\MINIGUIUNICODE\LIB\MINIGUI.LIB|h_ini
hbmk2[demo]: Error: Running linker. 2

minigui.cfg имеет вид
 
# Basic configuration for Compile.bat
MG_CMP=harbour
MG_BCC=c:\borland\bcc58
MG_ROOT=c:\miniguiUnicode


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




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


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

click here

Желаю всем удачи

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




Пост N: 2061
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.09.22 16:35. Заголовок: SergKis пишет: Сбор..


SergKis пишет:

 цитата:
Сборка версии unicode файлом MakeAllMiniguiLibs.bat выдает протокол с бяками


Поправил и обновил архив для этой сборки по старому адресу

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




Пост N: 4162
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.10.22 22:53. Заголовок: gfilatov2002 Поправ..


gfilatov2002
Поправил класс TIniData. Добавил чтение ini из строки буфера (для работы из ресурсов, ini в CUSTOM собираем). Почему то нет ф-ии получение ресурса в строку буфер (может не увидел), нашел только RCDataToFile(...)
Весь текст Скрытый текст

Пример для версии unicode https://TransFiles.ru/85dt8
Пример для версии НЕ unicode https://TransFiles.ru/eviz8

В примере строки использования
 
// oIni := TIniData():New( cIni, .T. ):Read()

cBuf := hb_memoread( cIni )
oIni := TIniData():New( , .T., , , cBuf ):Read()
oCom := oIni:COM

oIni:Read( ".\demo_new.ini" )

.\demo_new.ini - это заменяющие\добавляющие значения ключей по секциям, т.е. если базовый ini лежит в ресурсах, то доп. ini задаем текущие (для этого клиента) новые значения

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




Пост N: 4163
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.10.22 10:04. Заголовок: PS Используем, у себ..


PS
Используем, у себя, такую ф-ю для работы с ресурсом CUSTOM (VC2019) Скрытый текст


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




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


SergKis пишет:

 цитата:
Поправил класс TIniData. Добавил чтение ini из строки буфера


Большое спасибо за дополнение
Обязательно использую эти изменения для следующей сборки (после изучения, конечно ).

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




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


SergKis пишет:

 цитата:
Почему то нет ф-ии получение ресурса в строку буфер (может не увидел), нашел только RCDataToFile(...)


Добавил новую функцию RCDataToMem()
Синтаксис:

 цитата:
RCDataToMem( <cResName>|<nResID>, [<cResType>|<nResType>], ;
[<hModule>] ) => cResult


Благодарю за ваш запрос

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




Пост N: 2064
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.10.22 15:33. Заголовок: Всем кому это интересно


Завершена подготовка 2-го обновления сборки 22.09, которое планируется к выпуску на этой неделе

Кратко, что нового:
Скрытый текст

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

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




Пост N: 2065
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.10.22 11:39. Заголовок: Выложил 2-е обновлен..


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

click here

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





Пост N: 87
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 15.10.22 07:49. Заголовок: Astra Linux


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

Руководство в конторе переводит все компы на Astra Linux, у меня все софты на Harbor - возможны ли какие-либо проблемы ..?

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




Пост N: 4164
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.10.22 21:08. Заголовок: gfilatov2002 Предло..


gfilatov2002
Предложение вкл. ф-ии работы с txt файлами как образы в память, оч. быстрая работа.
Описание ф-ий Скрытый текст


Функции Скрытый текст

Пример использования Скрытый текст


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




Пост N: 7260
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.10.22 11:11. Заголовок: Что то не совсем пон..


Что то не совсем понятен пример использования ?
Там просто функция чтения файла и всё.
А как вытаскивать нужные значения в тексте программы ?

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




Пост N: 4166
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.10.22 17:22. Заголовок: Andrey пишет Что то ..


Andrey пишет
 цитата:
Что то не совсем понятен пример использования ?


 
IF ( nMp := fmp_Open( cTxt ) ) > 0
DO WHILE ! fmp_Eof( nMp )
cTx := fmp_Line( nMp )
...
ENDDO
fmp_Close( nMp )
ENDIF
или
IF ( nMp := fmp_Open( cTxt ) ) > 0
nK := fmp_Count( nMp )
FOR nI := 1 TO nK
cTx := fmp_Line( nMp, nI )
...
NEXT
fmp_Close( nMp )
ENDIF
...


 цитата:
Там просто функция чтения файла и всё


Так это и есть ф-ии чтения файла, который мапируется средствами windows в память.
Если у тебя есть журналы большие лог и их много за период, то можно организовать на этих ф-ях просмотр журналов или съесть их в dbf (данные зависят от структуры лога в каждом конкретном случае). Пример показан для выборки из файлов txt до ~10 000 000 записей каждый (выдаваемые отчеты в txt из системы sql сервера) данных в dbf для дальнейшей индексации и реализации получения отчетов, которых нет в системе (а их там практически нет - все в ручном режиме через задание sql команд select ...)

 цитата:
А как вытаскивать нужные значения в тексте программы ?


Как из полученной строки. В примере это так
 
cTx := fmp_Line( nMp )
IF Right(( cKy := left(cTx, 12) ), 1) $ "0123456789"
APPEND BLANK
FieldPut( 1, cKy )
FieldPut( 2, subs( cTx, 14, 12) )
FieldPut( 3, subs( cTx, 27, 12) )
FieldPut( 4, subs( cTx, 40, 12) )
FieldPut( 5, subs( cTx, 53, 12) )
FieldPut( 6, subs( cTx, 61, 12) )
FieldPut( 7, subs( cTx, 79, 12) )
FieldPut( 8, subs( cTx, 92, 6) )
cTx := Dos4W5( alltrim(subs( cTx, 99 )), 8) // перекодировка utf8 -> LV866
IF chr(0) $ cTx ; cTx := StrTran(cTx, chr(0), "")
ENDIF
FieldPut( 9, cTx )

ф-я ниже разбирает строку полей, отделенных Chr(9) на массив значений полей
fmp_ATokenCSV( [nMapArea], nLine, [lDel], [lCheckUTF8] ) -> {"Line..." | "", ...} // получить массив токенов для файла CSV
где lDel == .T. кавычки удаляет ( если есть одновременно обе ) или .F. ничего не удаляет [ lDel == .T. default ]
т.е.
 
aVal := fmp_ATokenCSV( nMp, nI )
(cAls)->( AEval(aVal, {|c,n| FieldPut(n, c) }) )


Одновременно можно открыть до 10 областей (файлов) для обработки, т.е.
nMp1 := fmp_Open( cTxt1 )
nMp2 := fmp_Open( cTxt2 )
...
nMp10 := fmp_Open( cTxt10 )

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




Пост N: 7702
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.10.22 18:16. Заголовок: Сергей хочешь сказат..


Сергей хочешь сказать что это быстрее механизма hb_fuse
и связанных функций ?

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




Пост N: 4167
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.10.22 20:05. Заголовок: Dima пишет хочешь ск..


Dima пишет
 цитата:
хочешь сказать что это быстрее механизма hb_fuse


Да.
aFile := array(200)
// заполняем aFile 200 файлов log с записями 1 500 000 строк разделенных CRLF всего
FOR nI := 1 TO 200
cFile := aFile[ nI ]
nMp := fmp_Open( cFile )
fmp_Count( nMp ) // подсчет строк в файле
fmp_Close( nMp )
NEXT
это занимает ~ 0.2-0.3 сек. Опыт делался еще на hb20 давно в районе 2012 г.

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




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


SergKis пишет:

 цитата:
Опыт делался еще на hb20 давно в районе 2012 г.


Долго же ты ждал , что бы выложить

PS
Сам проверю.

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




Пост N: 4168
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.10.22 21:45. Заголовок: Dima пишет Долго же ..


Dima пишет
 цитата:
Долго же ты ждал


Написал и использовал товарищ по работе для log журналов расчета квартплаты и импорта больших csv файлов. У меня ранее на VO была сделана система работы с txt файлами как с log, так и с другими, в итоге получалась база[ы] dbf и далее типа browse для работ получения отчетов (генератор их). Исп. не так часто, только при разборах полетов и оч. редких запросов налоговой при проверках. Было до лампочки по времени работы.
Столкнулся с проблемой времени при ежедневной откачке инф. из firebird, где данные переменного объема (чужая задача) от ~2 500 000 записей растет до ~10 000 000 за ~3 месяца, потом база обрезается опять до последних ~2 500 000. В этой ситуации сам применил, что было давно сделано. Решил поделится, вдруг пригодится кому.
Сразу скажу, что исп. fbclient.dll и класс oServer := TFBServer():New( cServer + cDatabase, cUser, cPass, nDialect ) на таких объемах (выбор всех данных из таблицы) ожидаемо сваливалось и надо было строить разные запросы с ограничениями записей и в целом усложнять все, т.е. себе лишняя работа. Исп. возможности их системы выдавать отчеты в txt файлы и обработал как в примере выше. Получилось несколько отчетов с max 10 000 000 записей (во всех ~5 штук). Раз в сутки (чаще клиенту не надо) все данные из firebird попадают в помесячную базу на CDX для ежедневных, годовых, квартальных отчетов и ...

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




Пост N: 7704
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 17.10.22 12:16. Заголовок: Сергей , погонял тес..


Сергей , погонял тесты. Шикарный инструмент по скорости.
Тестовый файл , длина строки 1000 + CRLF , всего строк 1 000 000
hb_flastrec() 0.93
ft_FLastRe() 0.92
fmp_Count() 0.39
Ежели в цикле читать строки
hb_freadln() 5.00
ft_FReadLn() 4.7
fmp_Line () 0.72

Во время сборки ворнингов дофигища....код не совсем корректен ?
Скрытый текст



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




Пост N: 4169
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.10.22 21:03. Заголовок: Dima пишет Во время ..


Dima пишет
 цитата:
Во время сборки ворнингов дофигища....код не совсем корректен ?


У нас сборка под vc 2019, протокол чистый (для 2008 и 2017 так же норм)
 
DbOpenCount.C
FileFun.C
MapFile.C
CsvLine.C
Создание кода...


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




Пост N: 7705
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 17.10.22 21:06. Заголовок: SergKis У меня MinG..


SergKis
У меня MinGw.
Ну да ладно , работает же
Спасибо !

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




Пост N: 4170
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.10.22 21:15. Заголовок: Dima Как я понял, т..


Dima
Как я понял, тут не исп. переменная n, можно убрать
 
static BOOL __OpenFile( WCHAR * cFile, int ind, int nRO )
{
int i=0 /*,n*/;
while( amf[ i ].dwSize > 0 && i < AMF_SIZE) i++;
if(i == AMF_SIZE) return FALSE;
MF.pLine = MF.pData + i;
...

/*
n = 0;

комент /* был тут
while( ( DWORD ) i < MF.dwSize && MF.pData != 10) { i++; n++; }

MF.nLine = 1;
MF.nLen = ( n>0 && (MF.pData[i-1]==13) )? (n-1) : n;
*/



return TRUE;
}

в др. местах тип надо приводить не 'const char *' а 'unsigned char *', но думаю MinGw применил как надо

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




Пост N: 7706
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 17.10.22 22:36. Заголовок: попробую , спасибо С..


попробую , спасибо Серёга !

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




Пост N: 4171
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 20.10.22 18:27. Заголовок: Dima Небольшой прим..


Dima
Небольшой пример тсб просмотра файла ф-ями fmp_Line(...), если интересно, конечно
Тут https://TransFiles.ru/gfemn
Если BOM у файла utf8 есть и стоит 3-ий параметр fmp_line(...,..., .T.), то перекодировка из utf8 есть, иначе нет и надо самому делать, как в примере ф-я dos4w5(...) делает utf8 -> lv866.
Можно применять и fmp_ATokensCSV(...), тогда можно делать поколоночный показ файла (разделитель колонок chr(9) в записи)
PS
Пример сделан на своей версии, можешь пробнуть собрать на hmg, поставив свою CDP, свой файл и если он utf8 без BOM, заменить dos4w5(...) на hb_Utf8ToStr( fmp_Line(...) )

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




Пост N: 7710
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.10.22 19:17. Заголовок: SergKis :sm36:..


SergKis


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




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


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

click here

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




Пост N: 2067
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.11.22 19:19. Заголовок: Завершена подготовка..


Завершена подготовка новой сборки 22.11, которая планируется к выпуску на следующей неделе

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

Возможно, нового внесено не так уж и много, но пришлось основательно перелопатить и оптимизировать Си-код ядра библиотеки

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




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


Как и обещал, выложил финальную сборку 22.11

click here

Также обновил Unicode версию библиотеки по старому адресу для Сергея

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

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




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


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


Спасибо
Буду пробовать на ней, а предыдущую unicode дополнил RcDataToMem() и полет нормальный.
Пока единственный затык с работающей версией - это работа modal окна под MdiChild, в нашей версии работает.

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




Пост N: 2070
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 26.11.22 14:25. Заголовок: Всем кому это интересно


Завершена подготовка новой сборки 22.12, которая планируется к выпуску на следующей неделе

Что нового:
- исправление ошибок и неточностей в коде;
- добавлена новая возможность для элемента управления SWITCHER - картинка для режима отображения disabled;
- продолжена основательная чистка Си-кода с целью удаления ненужных переменных, без которых можно обойтись;
- добавлен новый пример, который показывает как закрасить цветом всю строку, столбец или отдельную клетку в элементе управления GRID.

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

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




Пост N: 2071
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.11.22 12:25. Заголовок: Опубликована финальн..


Опубликована финальная сборка 22.12, которая выложена по адресу
click here

Замечание. Обращаю ваше внимание, что также есть платные сборки этой версии библиотеки для следующих 64-битных Си-компиляторов:
- Borland\Embarcadero C++ 7.20 for Win64;
- MinGW GNU C 12.2.0 (packaged on 2022-08-28);
- MS Visual C++ 2022 Community Edition (19.34.31933).

Таким образом, работоспособность библиотеки была успешно проверена для всех актуальных версий современных Си компиляторов

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




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


Завершена подготовка 1-го обновления сборки 22.12, которая планируется к выпуску на следующей неделе

Что нового:
- исправление обнаруженных ошибок (подробности есть на английском форуме Минигуи);
- добавлен новый переключатель AUTOUPDATE в элементе управления GetBox с использованием класса FIELD, который предназначен для принудительной записи в поле базы данных при любом изменении значения Value в GetBox;
- добавлены новые макросы для унификации параметров в Си-коде библиотеки;
- обновлена библиотека BosTaurus с целью оптимизации кода;
- обновлена сборка компилятора Харбор до текущей версии на сервере github;
- обновлены некоторые примеры с учетом изменений и дополнений в ядре библиотеки.

Искренне благодарю за материальную поддержку моей работы Андрея Верченко!

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




Пост N: 2073
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.12.22 12:08. Заголовок: Выложил 1-е обновлен..


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

click here

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




Пост N: 7270
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.12.22 13:37. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Выложил 1-е обновление сборки 22.12


Можно ссылку на юникодную версию ?
И ещё ссылку для компилятора Microsoft ?

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




Пост N: 2074
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.12.22 14:08. Заголовок: Andrey пишет: Можно..


Andrey пишет:

 цитата:
Можно ссылку на юникодную версию ?


Отравил ссылки в Л.С.

Andrey пишет:

 цитата:
ссылку для компилятора Microsoft ?


Там ссылка на версию Unicode для компилятора MS VC 2022

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




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


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

click here

Завершена адаптация библиотеки для работы с последней доступной 64-битной версией компилятора
Borland/Embarcadero C++ 7.40, который основан на LLVM/Clang C 3.3.1 (36707.161adda.9a76976) (64-bit)

Мои наилучшие поздравления и пожелания всем форумчанам с наступающими праздниками!

Желаю всем здоровья и удачи в Новом году

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




Пост N: 2077
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.01.23 17:45. Заголовок: Всем кому это интересно


Поздравляю всех с сочельником и Рождеством Христовым!

Завершена адаптация библиотеки для работы с последней доступной 64-битной версией компилятора
Pelles ISO C Compiler 11.0, который по скорости работы не уступает Embarcadero C++ 7.40 (64-bit)

Моя искренняя благодарность Андрею Верченко за поддержку моей работы!

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




Пост N: 2078
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.01.23 17:03. Заголовок: Всем кому это интересно


Подготовил 1-й релиз-кандидат новой сборки 23.01, которая планируется к выпуску через две недели.

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

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

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




Пост N: 7272
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.01.23 17:11. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
* Updated libpng library to 1.6.39 (from 1.6.38);


А где эта библиотека сидит ?
Картинки PNG будут лучше отображаться в ТСБ и на формах ?
А то если картинку на форме увеличиваешь, то качество теряется, ребристая становиться...

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




Пост N: 4193
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.01.23 15:10. Заголовок: gfilatov2002 пишет Е..


gfilatov2002 пишет
 цитата:
Если у вас есть интересные дополнения или исправления


Небольшие отличия THmgData() в моей версии Скрытый текст

Хотя, METHOD Json( cJ, lJ ) не обязателен - для информации

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




Пост N: 2079
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 18.01.23 17:47. Заголовок: SergKis пишет: Небо..


SergKis пишет:

 цитата:
Небольшие отличия THmgData()


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

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




Пост N: 7273
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.01.23 23:34. Заголовок: Ранее было в 2019 го..


Ранее было в 2019 году -
SergKis пишет:

 цитата:
Может добавить функцию (по аналогии с HMG_GetFormControls()) ?
K примеру
FUNCTION HMG_GetForms( cTyp, lObj )



А как узнать окно скрыто на экране или нет ?
Т.е. получить признак окна Show/Hide у себя в функции:
FUNCTION myGetWinList() 
LOCAL i, cS, aForm := HMG_GetForms()

cS := ""
FOR i := 1 TO LEN(aForm)
cS += STR(i) + ", " + aForm + ", " + _HMG_aFormType[ i ] + ", "
cS += HB_NtoS(_HMG_aFormHandles[ i ]) + CRLF
NEXT
MsgInfo(cS)

Return NIL


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




Пост N: 2080
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 21.01.23 15:12. Заголовок: Andrey пишет: А как..


Andrey пишет:

 цитата:
А как узнать окно скрыто на экране или нет ?


Для этого можно использовать вызов функции

 цитата:
GetProperty( "Form1", "Visible" )



Рабочий пример для проверки см. ниже
Скрытый текст


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




Пост N: 4194
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.01.23 16:54. Заголовок: gfilatov2002 пишет Д..


gfilatov2002 пишет
 цитата:
Для этого можно использовать вызов функции GetProperty( "Form1", "Visible" )


может исп. такие варианты
#translate _IsWindowVisible( cForm ) => IsWindowVisible( GetFormHandle( cForm ) )
#translate IsFormVisible( FormName ) => IsWindowVisible( GetFormHandle( "FormName" ) )

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




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


SergKis пишет:

 цитата:
исп. такие варианты


Да, так можно сделать.
Но все же предпочтительным в Минигуи является использование функций GetProperty()/SetProperty().
К вызову именно этих функций сводится использование псевдо-ООП в библиотеке.

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




Пост N: 4195
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.01.23 17:49. Заголовок: gfilatov2002 пишет К..


gfilatov2002 пишет
 цитата:
К вызову именно этих функций сводится использование псевдо-ООП в библиотеке


+ DoMetod() и больше ничего не надо , но мнемоника параметров и их позиции для окон и конторлов при исп. этих ф-ий тоже требует усилий. Не зря же целый каталог для препроцессора существует, что бы win api напрямую не использовать.

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




Пост N: 7274
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.01.23 22:25. Заголовок: Спасибо БОЛЬШОЕ ! По..


Спасибо БОЛЬШОЕ ! Получилось !

Только чуток не работает функции:
   FOR nI := 1 TO Len(aForm) 
cForm := aForm[nI]
? nI, cForm, _HMG_aFormType[nI], _HMG_aFormHandles[nI]
?? "Visible=", IsWindowVisible( GetFormHandle( cForm ) )
?? GetProperty( cForm, "Visible" )
....

1  Form_Main   A  460206   Visible= .T.   .T.    
2 Form_Win1 S 1049612 Visible= .F. .F.
3 Form_Win2 S 393928 Visible= .F. .F.
4 Form_Win3 S 67248 Visible= .F. .F.
5 Form_Table_Dog '' 0 Visible= .T. .T.
6 Form_Table_Abon S 132806 Visible= .T. .T.

Почему нет значения Form_Table_Dog '' 0 ?
Форма на экране есть, а значения в логе нет !
т.е. не работает - _HMG_aFormType[nI], _HMG_aFormHandles[nI]

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




Пост N: 4196
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.01.23 22:54. Заголовок: Andrey пишет т.е. не..


Andrey пишет
 цитата:
т.е. не работает - _HMG_aFormType[nI], _HMG_aFormHandles[nI]


посмотри значение _HMG_aFormDeleted[nI] для Form_Table_Dog (выведи для всех)

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




Пост N: 7275
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.01.23 23:57. Заголовок: SergKis пишет: посм..


SergKis пишет:

 цитата:
посмотри значение _HMG_aFormDeleted[nI] для Form_Table_Dog


Вот так:
 
1 Form_Main A 2426566 .F. Visible= .T. .T.
2 Form_Win1 S 198358 .F. Visible= .F. .F.
3 Form_Win2 S 198356 .F. Visible= .F. .F.
4 Form_Win3 S 1115148 .F. Visible= .F. .F.
5 Form_Table_Dog '' 0 .T. Visible= .T. .T.
6 Form_Table_Abon S 983678 .F. Visible= .T. .T.
7 Form_Table_Zaivk S 852104 .F. Visible= .T. .T.

Окно Form_Table_Dog с таблицей на экране есть !

Если сразу после главного окна открывать другое окно, то тогда оно = 0 !!!
Вот открытие окон в другом порядке:
 
1 Form_Main A 3344120 .F. Visible= .T. .T.
2 Form_Win1 S 722656 .F. Visible= .F. .F.
3 Form_Win2 S 1311898 .F. Visible= .F. .F.
4 Form_Win3 S 788088 .F. Visible= .F. .F.
5 Form_Table_Zaivk '' 0 .T. Visible= .T. .T.
6 Form_Table_Abon S 395016 .F. Visible= .T. .T.
7 Form_Table_Dog S 592490 .F. Visible= .T. .T.


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




Пост N: 4197
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.01.23 15:43. Заголовок: gfilatov2002 Сделал..


gfilatov2002
Сделал правки небольшие (управление клавишами на Preview HbPrinter)
Проверял SAMPLES\Advanced\REPORT_GENERATOR_2\demo2.prg
Скрытый текст

т.е.
1. фокус на окно отображения листов
2. Insert\Delete - zoom +\- листа
3. стрелки вверх, вниз перемещают строки листа вверх, вниз (PgUp, PgDown перемещают листы, как раньше)
Наверно, надо для zoom задействовать еше левую\правую кнопки мыши и scroll на колесико, но не помню как на окно задействовать эти события
Может это, вообще, лишнее ?

PS. Поправил выше текст, вынес назначения клавиш за ENDIF (выделил цветом и bold) это с учетом 1 листа

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




Пост N: 2082
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.01.23 14:07. Заголовок: Как и обещал, выложи..


Как и обещал, выложил финальную сборку 23.01

click here

Также обновил Unicode версию библиотеки по старому адресу для Сергея

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

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




Пост N: 4198
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.01.23 20:18. Заголовок: gfilatov2002 пишет Т..


gfilatov2002 пишет
 цитата:
Также обновил Unicode версию библиотеки по старому адресу для Сергея


Спасибо

Покрутил еще HbPrinter-Preview, вот что вышло Скрытый текст

Работает как хотелось (кроме прокрутки строк колесом)

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




Пост N: 2083
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.01.23 22:29. Заголовок: SergKis пишет: Покр..


SergKis пишет:

 цитата:
Покрутил еще HbPrinter-Preview


Неплохо, но как-то привычнее менять масштаб с помощью серых клавиш +/- вместо Ins/Del.

SergKis пишет:

 цитата:
кроме прокрутки строк колесом


Можно попробовать задействовать такой код в обработчике события окна WM_MOUSEWHEEL
         IF HiWord ( wParam ) == WHEEL_DELTA 

IF GetScrollPos ( hwnd , SB_VERT ) < 25
SendMessage ( hwnd , WM_VSCROLL , SB_TOP , 0 )
ELSE
SendMessage ( hwnd , WM_VSCROLL , SB_PAGEUP , 0 )
ENDIF

ELSE

IF GetScrollPos ( hwnd , SB_VERT ) >= GetScrollRangeMax ( hwnd , SB_VERT ) - 10
SendMessage ( hwnd , WM_VSCROLL , SB_BOTTOM , 0 )
ELSE
SendMessage ( hwnd , WM_VSCROLL , SB_PAGEDOWN , 0 )
ENDIF

ENDIF
...


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




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


gfilatov2002 пишет
 цитата:
как-то привычнее менять масштаб с помощью серых клавиш +/- вместо Ins/Del


На ноутах нет серых клавиш +/-, а у клиентов их уже больше чем стационарных, но добавить дополнительно можно.

 цитата:
задействовать такой код в обработчике события окна WM_MOUSEWHEEL


Хотелось что то цивильное, как блок в _HMG_aFormClickProcedure[...], колесико всегда есть на окнах

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




Пост N: 2084
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.01.23 15:07. Заголовок: SergKis пишет: доба..


SergKis пишет:

 цитата:
добавить дополнительно можно


Добавлять ничего не нужно, эти клавиши уже работают.

SergKis пишет:

 цитата:
колесико всегда есть на окнах


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

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




Пост N: 7278
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.01.23 15:21. Заголовок: А GIF файлы будут ра..


А GIF файлы будут работать на окне, если будем использовать его для
  // Start preloding in a separate thread 
hb_threadDetach( hb_threadStart( HB_THREAD_INHERIT_MEMVARS, @WaitThreadTimer(), aParam ) )



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




Пост N: 2085
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 27.01.23 16:55. Заголовок: Andrey пишет: GIF ф..


Andrey пишет:

 цитата:
GIF файлы будут работать на окне


Да, проверил на примере из папки SAMPLES\Advanced\Tsb_Export_2

Что изменил:

1) поместил в окно WaitWin_* следующее определение для элемента GIF:
      @ nIRow, nICol ANIGIF Gif_1 OBJ oGif PARENT &cFormName PICTURE "res\loading.gif" WIDTH 100 HEIGHT 100 
2) определил глобальную статическую переменную oGif для видимости ее в функции WaitThreadTimerIcon()

3) заменил в функции WaitThreadTimerIcon() вызов
 
nStaticNum++
nStaticNum := IIF( nStaticNum > LEN(aStatPictWait), 1, nStaticNum )
DRAW ICON IN WINDOW &cFormName AT nRow, nCol PICTURE hStatPictWait[nStaticNum] ;
WIDTH nWH HEIGHT nWH TRANSPARENT

на
          iif( ! oGif:IsRunning(), oGif:Play(), )


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




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


Подготовил 1-й релиз-кандидат новой сборки 23.02, которая планируется к выпуску на следующей неделе...

Главное изменение связано с адаптацией библиотеки для работы с компилятором Open Watcom C версии 2.0 (32-bit).

Также обновил Харбор до свежей версии:

 цитата:
* Updated: Harbour Compiler 3.2.0dev (SVN 2023-02-03 02:46):
* Updated libhpdf library to 2.4.3 (from 2.3.0 RC2).


Прошу откликнуться всех, кому это интересно

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




Пост N: 7291
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.02.23 21:04. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Прошу откликнуться всех, кому это интересно


Конечно интересно ! С не терпеньем ждем !

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




Пост N: 1877
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 13.02.23 11:34. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Прошу откликнуться всех, кому это интересно


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


Спасибо.

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




Пост N: 4202
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.02.23 13:17. Заголовок: gfilatov2002 Предло..


gfilatov2002
Предложение по SBrowse ( uAlias, cTitle, bSetUp, aCols, nWidth, nHeight, lSql, lModal, lNumber, lCenter )
- lModal делать (через \ варианты) :
"M"\ 1 \ .T. - modal
"C" \ 2 \ .F. - child
"S" \ 3 - standard - new добавил окно WINDOWTYPE STANDARD
и lCenter := .T. \ .F. - центровать окно или нет
Пример и правленный исходник (в hbp примера prg не включал, у меня уже в основной либ сделано)
тут https://TransFiles.ru/tpta8

для dbf вызов будет такой (modal окно) :
SBrowse_Viewer( Alias(), Sys.ClientWidth, Sys.ClientHeight, , .T., {} )

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




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


SergKis пишет:

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


Большое спасибо!
Принято

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




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


gfilatov2002
Собрал пример для типов окон "S" и "C" и получил ошибку для "C" при вып. ф-ии my_OnInit_SBrowse(), связанную с командой
SET WINDOW THIS TO cWnd
что то не срастается по среде This для Child окна, заменил на ф-ю HMG_This_SaveRest(...) (в тексте prg) - все ok! Запуск
demo.exe C -> child окна
demo.exe или demo.exe S - STANDARD окна
Пример тут https://TransFiles.ru/sqagj

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




Пост N: 2093
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.02.23 19:30. Заголовок: SergKis пишет: что ..


SergKis пишет:

 цитата:
что то не срастается по среде This для Child окна


Поправил эту функцию таким образом:

 цитата:
FUNCTION my_OnInit_SBrowse(nMode, cWnd)
LOCAL oBrw, oTsb, nWnd //, aThis
LOCAL cBrw := "oBrw"

SET WINDOW THIS TO cWnd
//aThis := HMG_This_SaveRest( cWnd )
oBrw := this.(cBrw).Object //GetProperty(cWnd, "oBrw", "Object")

oTsb := oBrw:Cargo
nWnd := oTsb:nForm

? procname(), nMode, cWnd, nWnd, oTsb, oBrw:cParentWnd, oBrw:cControlName

ThisWindow.Row := ThisWindow.Row + oMain:Cargo:aRow[ nMode ]
ThisWindow.Col := ThisWindow.Col + oMain:Cargo:aCol[ nMode ]

SET WINDOW THIS TO
//HMG_This_SaveRest( aThis )

DO EVENTS ; _wPost(nMode + 1, oMain:Name, .T.)

RETURN Nil


У меня вроде работает нормально...

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




Пост N: 4204
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.02.23 19:59. Заголовок: gfilatov2002 пишет У..


gfilatov2002 пишет
 цитата:
У меня вроде работает нормально...


У меня тоже работает, но это не радует, т.к. порушились (для Child) правила This ... для окна (для STANDARD все ok!)
This. ...
ThisWindow. ...
одно и тоже
This.oBrw.Object
___^^^^ - имя контрола
такое правописание позволяет сокращать текст и делать его более читаемым
С ф-ей HMG_This_SaveRest() это все работает, ф-ю я взял из своей версии, т.к. применение ее парное, надо, наверное, подумать над командой с этой ф-ией
SET WINDOW THIS SAVE aThis TO cWnd
...
SET WINDOW THIS REST aThis TO
для лучшей читаемости

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




Пост N: 2094
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.02.23 20:20. Заголовок: SergKis пишет: This..


SergKis пишет:

 цитата:
This.oBrw.Object
___^^^^ - имя контрола


Проверил запись в виде

 цитата:
SET WINDOW THIS TO cWnd
oBrw := this.oBrw.Object //GetProperty(cWnd, "oBrw", "Object")


Она работает для дочернего окна тоже

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




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


gfilatov2002 пишет
 цитата:
Она работает для дочернего окна тоже


но не работает This.Row, This.Col. Перебирать при переносе текст, та еще радость будет
Сделал
 
#xcommand SET WINDOW THIS SAVE <a> TO <w> => <a> := HMG_This_SaveRest( <w> )
#xcommand SET WINDOW THIS REST <a> TO => HMG_This_SaveRest( <a> )
и код работает для "C" и "S" окон
SET WINDOW THIS SAVE aThis TO cWnd
oBrw := This.oBrw.Object //GetProperty(cWnd, "oBrw", "Object")
oTsb := oBrw:Cargo
nWnd := oTsb:nForm

? procname(), nMode, cWnd, nWnd, oTsb, oBrw:cParentWnd, oBrw:cControlName

This.Row := This.Row + oMain:Cargo:aRow[ nMode ]
This.Col := This.Col + oMain:Cargo:aCol[ nMode ]

SET WINDOW THIS REST aThis TO

PS
Может лучше
#xcommand SET WINDOW THIS <w> SAVE <a> => <a> := HMG_This_SaveRest( <w> )
#xcommand SET WINDOW THIS REST <a> => HMG_This_SaveRest( <a> )

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




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


SergKis пишет:

 цитата:
не работает This.Row, This.Col


Поправил в функции _SetThisFormInfo() этот фрагмент

 цитата:
IF HB_ISCHAR( i )
i := GetFormIndex( i )
lDefine := ( _HMG_aFormType [ i ] == "C" )


и все заработало

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




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


gfilatov2002 пишет
 цитата:
и все заработало


Да, с такой правкой работает как надо

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




Пост N: 4207
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.02.23 11:16. Заголовок: gfilatov2002 Довел ..


gfilatov2002
Довел пример с исп. SBrowse до какой то кондиции: https://TransFiles.ru/ottjz
- смена типа окон S\C и немного управления
- смена вида курсора
- подсветка одинаковых ключей (группы) в просмотре

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




Пост N: 2096
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.02.23 12:19. Заголовок: SergKis пишет: Дове..


SergKis пишет:

 цитата:
Довел пример с исп. SBrowse


СПАСИБО

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




Пост N: 7292
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.02.23 13:15. Заголовок: SergKis пишет: Дове..


SergKis пишет:

 цитата:
Довел пример с исп. SBrowse до какой то кондиции:


Не до конца работает пример
Не работают кнопки Печать и Эксель.
Как их заставить работать ?

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




Пост N: 199
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 14.02.23 13:37. Заголовок: Фильтрация через oBrw:FilterFTS( cSeek, .t. ) и LetoDB


Привет всем! Я решил использовать фильтра oBrw:FilterFTS( cSeek, .t. ) вместе с сервером LetoDB . Все работает,
но заметил, что в логе сервера постоянно возникают вот такие строчки:

14.02.2023 12:06:30: Error BASE/1003 Variable does not exist: OB

!WARNING! leto_Filter! filter not optimized or syntax error:

ob:FilterFTS_Line( cFind, lUpper, lAll, ob)


Становится понятно, что фильтр не оптимизирован для LEtoDB, и что LetoDB не видит переменную ob

Можно ли ето както избежать?

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




Пост N: 4208
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.02.23 14:54. Заголовок: sashaBG пишет LetoDB..


sashaBG пишет
 цитата:
LetoDB не видит переменную ob


По мне надо сделать
1. ф-ю на сервере, аналог методу
METHOD FilterFTS_Line( cFind, lUpper, lAll ) CLASS TSBrowse
которая построчно выполняет то, что надо для возврата .T.\.F. и вызывать ее в выражении :FilterData( cFilter ), переменных с клиента на сторону сервера не передавать, т.е. сделать
FUNCTION UDF_FilterFTS_Line (...)
...
RETURN lRet

2. Переписать на клиента в mem:File (или на диск) поля ключи для Relation на осн. базу (тут тоже можно ограничить выборку условием) и связав по Relatiion, ставим :FilterFTS(...) поля по связанному alias будут тащится на клиента, а сам :FilterFTS() применяется к базе на клиенте (TsBrowse на отобранную на клиента базу работает). По идее должно быть ok!

В LetoDbF есть механизм передачи переменных и их значения на сторону сервера, но объекты (ссылка), думаю не передадуться тоже

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




Пост N: 4209
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.02.23 16:05. Заголовок: PS SergKis пишет Пер..


PS
SergKis пишет
 цитата:
Переписать на клиента в mem:File (или на диск) поля ключи для Relation на осн. базу


Забыл, что LetoDb (в отличии от LetoDbF) не имеет механизма SET RELATION ..., потому кроме ключевых и др. полей для локальной индикации, надо сохранять в выборке RecNo() записи на сервере и тогда исп. механизм TsBrowse блок кода oBrw:bOnDrawLine где делать переход на запись сервера, т.е. что то типа
oBrw:bOnDrawLine := {|ob,nrow| nrow := (ob:cAlias)->REC_NO, ("ALS_SERVERA")->( dbGoto(nrow) ) }

3. Сделать выборку полностью на сервере ф-ей сервера, написав ее (автономный аналог :FilerFTS(...) или только для этого запроса). Выполнением этой ф-ии на сервере должен быть рез. файл, который можно показывать на клиенте открыв TsBrowse.

Из за отсутсвия механизма Relation я перешел на LetoDbF - переход оч. простой получается - код почти не отличается от clipper. Т.к. осн. сервером исторически остался LetoDb (создание, модификация, ...), причем еще старый 2-х поточный, то LetoDbF пошел дополнением к LetoDb. Т.е. оба запущены одновременно (как daemon, а не сервисы), запускаются менеджером (простым на AutoIt 3 давно написанным) и менеджеры следят за наличием программ LetoDb и LetoDbf в памяти. Обе сборки серверов свои и в LetoDbf сделаны изменения по ini и log файлам, их названия LetoDbF.ini и LetoDbF.log. Тогда оба сервера лежат рядом и не конфликтуют по именам файлов. В ini для серверов исп. Share_Tables = 1 и разные порты

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




Пост N: 200
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 14.02.23 16:28. Заголовок: Спасибо за ответ!


Спасибо за ответ Сергей!

Попытаюсь написать функцию со стороны сервера, как вы рекомендовали. Если будут вопросы
буду задавать :)

Я еще не пробовал LetoDBf. Надо найти время попробовать!
А он наверное лучше, раз вы на нем перешли!

Всего доброго Всем!

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




Пост N: 4211
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.02.23 16:50. Заголовок: sashaBG Вот код, ка..


sashaBG
Вот код, как есть, по выборке (за период, клиенты, объекты, ...) событий (охрана) с сервера, показываем ее, связывая со спр. объектов на сервере Скрытый текст

код не отличается от обычной локальной работы. Есть одно правило SetRddDefault("LETO"), локальные как "DBFCDX", т.е.
 
IF ! mDbUse(cFile, cAlias, .T., "DBFCDX")
(cAlsO)->( dbCloseArea() )
//MsgStop("File not used !"+CRLF+cFile+".dbf", "ERROR")
RETURN Nil
ENDIF


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




Пост N: 7293
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.02.23 17:25. Заголовок: SergKis пишет: Дове..


SergKis пишет:

 цитата:
Довел пример с исп. SBrowse до какой то кондиции:


Пример ОЧЕНЬ классный...
Чуток бы цвета исправить...


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




Пост N: 4212
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.02.23 18:27. Заголовок: Andrey пишет Чуток б..


Andrey пишет
 цитата:
Чуток бы цвета исправить...


Посмотри строки
 
oTsb:bBefore := {|obrw| // before END TSBROWSE
Local oCol, oTsb
oTsb := obrw:Cargo
oCol := obrw:GetColumn("KOD")
oCol:Cargo := oHmgData()
oCol:Cargo:oColor := oTsb:oKod // keys unique
oCol:Cargo:lColor := Len(obrw:aArray) > 1
oCol:Cargo:nColor := GetSysColor( COLOR_BTNFACE )
// Test_Window_2() исп. CLR_HGRAY
oCol:bDrawCell := oTsb:bKodCell
Return Nil
}
и в этих строках исп. obrw:SetColor(...) никто не мешает (я использовал по минимуму для курсора, см. Test_Window_2() )
oTsb:bAfter := {|obrw| // after END TSBROWSE
Local oTsb, cWnd, nWnd, cTmp, lMsg, nMode, cMain
oTsb := obrw:Cargo
cWnd := obrw:cParentWnd
nWnd := oTsb:nForm
lMsg := oTsb:lPostMsg
nMode := oTsb:nMode
cMain := oMain:Name
oMain:Cargo:aForm[ nMode ] := cWnd
// ...
obrw:AdjColumns()
obrw:Refresh(.T.)
SetProperty( cWnd, "Topmost", .F. )

IF lMsg
cTmp := 'my_OnInit_SBrowse(' + hb_ntos(nMode) + ', "'+cWnd+'")'
SetProperty( cWnd, "ONINIT", hb_MacroBlock(cTmp) )
ENDIF
DO EVENTS
Return Nil
}

блоки кода
oTsb:bAfter := {|obrw| // after END TSBROWSE
oTsb:bBefore := {|obrw| // before END TSBROWSE
они твои, на выполнение подключаются как написано, уточнить можешь в SBrowse_Viewer(...)
В блоке кода oTsb:bBefore не все колонки, только реальные, объявленные
В блоке кода oTsb:bAfter уже все колонки SLECTOR и ORDKEYNO или ARRAYNO
это надо помнить при написании
PS. Дополнить код SBrowse_Viewer(...) предложениями\решениями - я только ЗА

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




Пост N: 7294
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.02.23 19:28. Заголовок: Григорий ! В примере..


Григорий !
В примере
SergKis пишет:

 цитата:
Довел пример с исп. SBrowse до какой то кондиции:


Не работают кнопки Печать и Эксель. Там же стандартный вызов
SBrowse( uAlias, {oTsb:cTitle, oTsb}, oTsb:bSetUp, , nW, nH, , oTsb:lModal, oTsb:lNumber, oTsb:lCenter )

Работать должно сразу или нет ?

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




Пост N: 4213
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.02.23 12:07. Заголовок: gfilatov2002 Посмот..


gfilatov2002
Посмотрел примеры Tsb_Export, Tsb_Export_2.
Все режимы с Excel ole у меня падают.
Подключил к примеру hbxlsxml.lib - работает
Пример https://TransFiles.ru/ag8zw

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




Пост N: 4214
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.02.23 18:43. Заголовок: gfilatov2002 Неболь..


gfilatov2002
Небольшая добавка
 
METHOD GotoRec( nRec, nRowPos ) CLASS TSBrowse
...
SysRefresh()

ELSEIF ::lIsArr

hb_default( @nRowPos, ::nRowPos )
::Gotop()
::Skip( nRec - 1 )
::nRowPos := nRowPos
::Refresh()
SysRefresh()

ENDIF
...


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




Пост N: 2097
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.02.23 19:49. Заголовок: SergKis пишет: Небо..


SergKis пишет:

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


Благодарю за предложение!
Попробовал эту добавку в примере из папки samples\Advanced\Tsb_array_3 (повесил на клавишу F2 переход на конкретную позицию в массиве, например на 50-ю строку).
Но результат перехода получился неудовлетворительным: блокируется движение вверх по клавише <стрелка вверх>, а также происходит в некоторых случаях "залипание" последней строки.

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




Пост N: 4215
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.02.23 21:47. Заголовок: gfilatov2002 Получи..


gfilatov2002
Получился такой вариант (вроде не глючит у меня)
 
ELSEIF ::lIsArr

hb_default( @nRowPos, ::nRowPos )
IF nRec > ::nLen
nRec := ::nLen
ENDIF
IF nRec == ::nLen
::GoBottom()
ELSE
::GoPos( nRec )
::nAt := nRec
::nRowPos := iif( nRowPos > ::nRowCount(), ::nRowCount(), nRowPos )
::lHitTop := ::lHitBottom := .F.
ENDIF
::Refresh( ::nRowCount() < ::nLen )
IF ::bChange != NIL
Eval( ::bChange, Self, 0 )
ENDIF
SysRefresh()

ENDIF


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




Пост N: 4216
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.23 01:00. Заголовок: gfilatov2002 Не зна..


gfilatov2002
Не знаю, что рыть, с ole не работал никогда, но это примеры hmg выдают Tsb_Export и Tsb_Export_2. Offis\Excel 2016 раньше было Ok!
Логи ошибок тут https://TransFiles.ru/mnoow

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




Пост N: 1878
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.02.23 11:39. Заголовок: SergKis пишет: Не з..


SergKis пишет:

 цитата:
Не знаю, что рыть, с ole не работал никогда, но это примеры hmg выдают Tsb_Export и Tsb_Export_2. Offis\Excel 2016 раньше было Ok!

Если актуально будет после обеда посмотрю. Работа с оле всегда непредсказуемая. А Что автор примеров на эту тему думает?

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




Пост N: 2098
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.02.23 11:55. Заголовок: Как и обещал, выложи..


Как и обещал, выложил финальную сборку 23.02

click here

Также обновил Unicode версию библиотеки по старому адресу для Сергея

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




Пост N: 4217
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.23 13:06. Заголовок: Haz пишет Если актуа..


Haz пишет
 цитата:
Если актуально будет после обеда посмотрю.


Не могу сказать об актуальности, но не так давно, на этой же PC все работало, валится у меня одного или у кого то еще ?
У меня исп. hbxlsxml.lib для форм. xml\xls и libXL для чтения данных.
С xml Excel работает, с libXL тоже.

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




Пост N: 1879
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.02.23 13:14. Заголовок: :sm17: SergKis пишет..


SergKis пишет:

 цитата:
валится у меня одного или у кого то еще


Запустил Tsb_Export все работает, никаких ошибок тоже Excel 2016. Правда с уже успел обновиться на сборку 23.02
Не пойму куда смотреть

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




Пост N: 7295
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.02.23 14:26. Заголовок: Haz пишет: Не пойму..


Haz пишет:

 цитата:
Не пойму куда смотреть


Пример ниже который свалиться если нажать на кнопке Эксель...

SergKis пишет:

 цитата:
Довел пример с исп. SBrowse до какой то кондиции: https://TransFiles.ru/ottjz
- смена типа окон S\C и немного управления
- смена вида курсора
- подсветка одинаковых ключей (группы) в просмотре

Мои предположения - если 1 поле в бровсе логическое, то при вызове Эксель - оля падает...



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




Пост N: 4218
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.23 14:53. Заголовок: Andrey пишет если 1..


Andrey пишет
 цитата:
если 1 поле в бровсе логическое, то при вызове Эксель - оля падает...


Всегда делаю так
aYesNo := {"Yes", "No"}
всегда можно параметром или еще как поменять
aYesNo := {"Да", "Нет"}
aYesNo := {"М", "Ж"}
aYesNo := {"Открыто", "Закрыто"}
...
для лог. колонки меняю .T. - aYesNo[1], .F. - aYesNo[2], самый простой вариант cValToChsr(...)

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




Пост N: 4219
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.23 15:19. Заголовок: Haz пишет Запустил T..


Haz пишет
 цитата:
Запустил Tsb_Export все работает, никаких ошибок тоже Excel 2016. Правда с уже успел обновиться на сборку 23.02
Не пойму куда смотреть


Игорь, никуда не смотри, на обновленной версии у меня так же валится Буду считать, что крякнулся Excel у меня, с Word работает Ok!

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




Пост N: 1880
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.02.23 15:47. Заголовок: Andrey пишет: Приме..


Andrey пишет:

 цитата:
Пример ниже который свалиться если нажать на кнопке Эксель...


Проблема не в примере , проблема в h_tbrowse.prg. Достаточно в demo.hbp добавить строку
 
# Keys compile
#-prgflag=-w0 -es1
-prgflag=-w2 -es1

# Enable multi/single-thread Harbour VM
-mt

# Incremental-compilation mode
-inc

# folder where are all * .obj
-workdir=OBJ

# Name EXE-module
-odemo

# to list all * .prg
demo.prg
h_tbrowse.prg
# paths to the main and extension *.Lib
-lminigui
#-lhbmemio



Все становится видно.

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




Пост N: 1881
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.02.23 15:51. Заголовок: Haz пишет: Проблема..


Haz пишет:

 цитата:
Проблема не в примере , проблема в h_tbrowse.prg. Достаточно в demo.hbp добавить строку


в исходниках метода METHOD ExcelOle() есть строки
 
IF ::lDrawSuperHd

FOR nCol := 1 TO Len( ::aSuperHead )
nVar := iif( lSelector, 1, 0 )
uData := iif( ValType( ::aSuperhead[ nCol, 3 ] ) == "B", Eval( ::aSuperhead[ nCol, 3 ] ), ;
::aSuperhead[ nCol, 3 ] )
oSheet:Cells( nLine, ::aSuperHead[ nCol, 1 ] - nVar ):Value := uData
cRange := HeadXls( ::aSuperHead[ nCol, 1 ] - nVar ) + LTrim( Str( nLine ) ) + ":" + ;
HeadXls( ::aSuperHead[ nCol, 2 ] - nVar ) + LTrim( Str( nLine ) )
oSheet:Range( cRange ):Borders():LineStyle := xlContinuous
oSheet:Range( cRange ):HorizontalAlignment := xlHAlignCenterAcrossSelection
oRange := oSheet:Range( cRange )
IF hFont != NIL
aFont := GetFontParam( hFont )
oRange:Font:Name := aFont[ 1 ]
oRange:Font:Size := aFont[ 2 ]
oRange:Font:Bold := aFont[ 3 ]
ENDIF
NEXT

nStart := nLine++
ENDIF




вот тут и идет обращение к oSheet:Cells() где номер колонки равен 0 из за этого ОЛЕ и валится
как быстрая правка вместо nVar := iif( lSelector, 1, 0 ) сделать nVar := 0 тогда все работает корректно.
Ну а дальше разбираться с ::lSelector ( осознанием его практической бесполезности ) и правкой метода.

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




Пост N: 4220
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.23 16:37. Заголовок: gfilatov2002 Неболь..


gfilatov2002
Небольшая правка, чтобы не растягивалась колонка SELECTOR
 
METHOD AdjColumns( aColumns, nDelta ) CLASS TSBrowse
...
FOR i := 1 TO k
c := aVisible[ i ]
IF i == 1 .and. ::lSelector
LOOP
ELSEIF i == k

::aColumns[ c ]:nWidth += ( w - s )
ELSE
s += n
::aColumns[ c ]:nWidth += n
ENDIF
NEXT
...


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




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


SergKis пишет:

 цитата:
Небольшая правка, чтобы не растягивалась колонка SELECTOR


OK

Для метода :GotoRec() добавил такую правку:
 
ELSEIF ::lIsArr

hb_default( @nRowPos, ::nRowPos )
IF nRec > ::nLen
nRec := ::nLen
ENDIF
IF nRec == ::nLen
::GoBottom()
ELSEIF nRec == 1
::GoTop()
ELSE
::GoPos( nRec )
::nAt := nRec
::nRowPos := iif( nRowPos > ::nRowCount(), ::nRowCount(), nRowPos )
::lHitTop := ::lHitBottom := .F.
ENDIF
::Refresh( ::nRowCount() < ::nLen )
IF ::bChange != NIL
Eval( ::bChange, Self, 0 )
ENDIF
SysRefresh()

ENDIF
...


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




Пост N: 4221
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.23 17:24. Заголовок: Haz Сделал FOR..


Haz
Сделал
 
FOR nCol := 1 TO Len( ::aSuperHead )
nVar := 0 //nVar := iif( lSelector, 1, 0 )
попал в др. место ниже
cTmp := "#0" ; nTmp := 0
IF "." $ uData //IF ( nTmp := At( ".", uData ) ) > 0
cTmp := "#,##0.00" // cTmp := Replicate( "#", nTmp - 2 ) + '0,' + Replicate( "0", Len( uData ) - nTmp )
ENDIF

Выделенное красным валит с сообщением
 цитата:

Error WINOLE/1006 Unable to set the NumberFormat property of the Range class (0x800A03EC): Microsoft Excel (DOS Error -2147352567) Args: [1] = C #0.00
Called from TSBROWSE:EXCELOLE(6639) ...




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




Пост N: 1882
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.02.23 18:15. Заголовок: SergKis пишет: Выде..


SergKis пишет:

 цитата:
Выделенное красным валит с сообщением


Сергей , валит скорее всего ниже красного, на этом oSheet:Cells( nLine, nCol ):NumberFormat := cTmp
Посмотри что в шаблоне . Сообщение об ошибке говорит
 
Error WINOLE/1006 Unable to set the NumberFormat property of the Range class (0x800A03EC): Microsoft Excel (DOS Error -2147352567) Args: [1] = C #0.00



точно такой код как ниже ? Не должно быть ошибки , ошибка говорит что cTmp = "#0.00"
 
IF "." $ uData
cTmp := "#,##0.00"
ENDIF


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




Пост N: 4222
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.23 18:40. Заголовок: Haz пишет валит скор..


Haz пишет
 цитата:
валит скорее всего ниже красного, на этом oSheet:Cells( nLine, nCol ):NumberFormat := cTmp


Это понятно, указывает номер строки в тексте ошибки, я говорил, что пытается стать формат "#0" или "#,##0.00" оба формата допустимы, как и "#0.00", с xml эти форматы проходят. Может в ячейке какая фигня и на нее ставится NumberFormat ? Для меня темный лес
По поводу Selector, он удаляется в начале работы потом восстанавливается

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




Пост N: 7296
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.02.23 18:45. Заголовок: Haz пишет: Проблема..


Haz пишет:

 цитата:
Проблема не в примере , проблема в h_tbrowse.prg. Достаточно в demo.hbp добавить строку



Да точно !
Проблема в том что не указана библиотека !
Достаточно в demo.hbp добавить библиотеку
# paths to the main and extension *.Lib 
-lminigui
-ltsbrowse

h_tbrowse.prg добавлять в проект не надо !

А можно как то проверять что нет оли для SBrowse() ?
А то проект нормально собираются а функции SBrowse не работают.

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




Пост N: 7745
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.02.23 18:53. Заголовок: Haz пишет: IF "..


Haz пишет:

 цитата:
IF "." $ uData
cTmp := "#,##0.00"
ENDIF


Так видать не совсем корректно и нужно считывать символ разделителя.
У меня так
NumberFormat:="# ##0"+razdels+"00"
Где razdels:=GET_SDECIMAL()

А лучше так
 
****************************
Func GetActualSeparator(Oxl)
return If(Oxl:UseSystemSeparators,{GET_STHOUSAND(),GET_SDECIMAL()},{Oxl:ThousandsSeparator,Oxl:DecimalSeparator})



PS
GET_SDECIMAL() есть на форуме

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




Пост N: 4223
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.23 19:18. Заголовок: Dima пишет GET_SDECI..


Dima пишет
 цитата:
GET_SDECIMAL() есть на форуме


Использую у себя. У меня дает ",", в коде тоже стоит '0,'
cTmp := Replicate( "#", nTmp - 2 ) + '0,' + Replicate( "0", Len( uData ) - nTmp )
а не фурычит, вернул изменения назад, не пользовался Ole и нечего начинать

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




Пост N: 7746
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.02.23 19:25. Заголовок: SergKis Так и пишу ..


SergKis
Так и пишу ведь что надо вероятно проверять UseSystemSeparators и в зависимости что вернет , юзать или систем сепаратор
или сепаратор Excel

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




Пост N: 4224
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.23 19:53. Заголовок: Dima В xml беру Exc..


Dima
В xml беру Excel сепаратор без вариантов и хватает. Без ole переживу (надобность была только для примеров, причем еще недавно они работали),
в примере выше, кидал архив, замену на кнопку вместо :ExcelOle() кода форм. простого варианта для hbXlsXml.lib, можно менять на :Excel2().
Этого для примеров мне достаточно. Спасибо

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




Пост N: 1883
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.02.23 20:29. Заголовок: SergKis пишет: Этог..


SergKis пишет:

 цитата:
Этого для примеров мне достаточно. Спасибо


Поддерживаю. ExcelOle() не востребованный метод. Если нужна
черновая выгрузка, то она пишется за полчаса один раз. Для отчётов вообще не подходит , тут XML круче. Можно XlsWriter еще пользовать, там функционал впечатляет, но натыкался на проблемы с окном и вернулся на XML

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




Пост N: 1884
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.02.23 20:37. Заголовок: Andrey пишет: h_tbr..


Andrey пишет:

 цитата:
h_tbrowse.prg добавлять в проект не надо !

h_tbrowse.prg добавил чтоб нумерацию строк в ошибку получить и было на чем смотреть не ломая библиотеку

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




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


gfilatov2002
Правки в Tsb_Sbrowse_3\demo.prg Скрытый текст


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




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


SergKis пишет:

 цитата:
Правки в Tsb_Sbrowse_3\demo.prg


Поправил
Благодарю за помощь

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




Пост N: 2103
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 22.02.23 12:28. Заголовок: Всем кому это интересно


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

click here

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

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




Пост N: 7304
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.02.23 20:14. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Выложил 1-е обновление сборки 23.02 с учетом последних исправлений и дополнений


Перешёл на него и пришлось откатиться назад.
Функция ISDIRECTORY() - перестала правильно определять директории.
Если в пути стоит последний знак "\" то новая функция теперь выдаёт .F.
Можно это как то исправить ?

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




Пост N: 2104
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 26.02.23 21:37. Заголовок: Andrey пишет: Можно..


Andrey пишет:

 цитата:
Можно это как то исправить ?


Да, я тоже обратил на это внимание.
Дело в том, что функция ISDIRECTORY() включена в Харбор только для совместимости с хHarbour (она берется из библиотеки xhb).

Исправить это можно, если записать вверху своего модуля такую строку:

 цитата:
#xtranslate IsDirectory( <c> ) => hb_DirExists( <c> )



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




Пост N: 4233
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.02.23 22:44. Заголовок: gfilatov2002 пишет И..


gfilatov2002 пишет
 цитата:
Исправить это можно, если записать вверху своего модуля такую строку:


По мне, лучше просканировать prg файлы и заменить все IsDirectory(...) на hb_DirExists(...), меньше головной боли
Или вставлять эту строку глобально в minigui.ch или hmg.ch

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




Пост N: 2105
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 26.02.23 22:52. Заголовок: SergKis пишет: лучш..


SergKis пишет:

 цитата:
лучше просканировать prg файлы и заменить все IsDirectory(...)


Не спорю, что так лучше...

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




Пост N: 7305
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.02.23 02:46. Заголовок: Есть ли функция опре..


Есть ли функция определяющая тип время наподобие: hb_IsLogical, hb_IsDate, hb_IsChar ?
Что-то не нашёл в i_pseudofunc.ch

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 336
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет