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 [только новые]


Andrey
постоянный участник




Пост N: 7761
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.05.24 18:52. Заголовок: Убрал из примера HB_..


Убрал из примера HB_FUNC( DESTROYICON) - модуль demos_util.prg
Теперь в checkres.txt следующее:
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,84219576,COLUMN_TSB(136)->MAIN(91) 
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,84219576,COLUMN_TSB(136)->MAIN(91)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,117774005,COLUMN_TSB(136)->MAIN(91)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,84219576,COLUMN_TSB(136)->MAIN(91)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,117774005,COLUMN_TSB(136)->MAIN(91)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,67442359,COLUMN_TSB(136)->MAIN(91)
.... и т.д.
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,67442359,COLUMN_TSB(136)->MAIN(91)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,50665150,COLUMN_TSB(140)->MAIN(91)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,33887935,COLUMN_TSB(140)->MAIN(91)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,33887936,COLUMN_TSB(140)->MAIN(91)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,33887937,COLUMN_TSB(140)->MAIN(91)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,33887938,COLUMN_TSB(140)->MAIN(91)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,33887939,COLUMN_TSB(140)->MAIN(91)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,33887940,TSBROWSE:NEW(1560)->_DEFINETBROWSE(314)->_TBROWSE(559)->MAIN(102)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BRUSH,1242568359,TSBROWSE:SETCOLOR(13377)->TSBROWSE:NEW(1660)->_DEFINETBROWSE(314)->_TBROWSE(559)->MAIN(102)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BRUSH,1024464538,_TBROWSE(559)->MAIN(102)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,17110726,(b)MAIN(96)->_TBROWSE(572)->MAIN(102)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BRUSH,1997543076,(b)MAIN(98)->_TBROWSE(579)->MAIN(102)

Размер checkres.txt - 11158 байт
И как его сокращать/убирать утечку памяти ?

Вот у себя в коде нашёл незакрытый хендл
   FOR nI := 1 TO LEN(aImg) 
hIco := LoadIconByName( aImg[nI], nHImg, nHImg )
hBmp := BmpFromIcon( hIco ) // вернет хендл bmp
cFile := cPath + aImg[nI] + ".png"
HMG_SaveImage( hBmp, cFile, "png" )
....

Как его убить ?

А что делать с этим ?
     BMP,33887940,TSBROWSE:NEW(1560)->_DEFINETBROWSE(314)->_TBROWSE(559)->MAIN(102)


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




Пост N: 4576
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.05.24 20:21. Заголовок: Andrey пишет Как его..


Andrey пишет
 цитата:
Как его убить ?


DeleteObject( hBmp )

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




Пост N: 7762
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.05.24 00:54. Заголовок: Размер checkres.txt ..


Размер checkres.txt уменьшился до 11285 (было 11158) байт
Остались тоже самое:
 
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,-234549685,COLUMN_TSB(136)->MAIN(91)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,-234549685,COLUMN_TSB(136)->MAIN(91)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,1627723450,COLUMN_TSB(136)->MAIN(91)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,-234549685,COLUMN_TSB(136)->MAIN(91)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,1627723450,COLUMN_TSB(136)->MAIN(91)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,2080708307,COLUMN_TSB(136)->MAIN(91)
...
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,-184215828,COLUMN_TSB(140)->MAIN(91)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,486872819,TSBROWSE:NEW(1560)->_DEFINETBROWSE(314)->_TBROWSE(559)->MAIN(102)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BRUSH,1511003877,TSBROWSE:SETCOLOR(13377)->TSBROWSE:NEW(1660)->_DEFINETBROWSE(314)->_TBROWSE(559)->MAIN(102)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BRUSH,890246898,_TBROWSE(559)->MAIN(102)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,1308956330,(b)MAIN(96)->_TBROWSE(572)->MAIN(102)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BRUSH,1343231766,(b)MAIN(98)->_TBROWSE(579)->MAIN(102)

Ну и как дальше бороться с утечкой памяти ?

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




Пост N: 7763
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.05.24 13:42. Заголовок: C:\MiniGUI_24.05..


C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,-184215828,COLUMN_TSB(140)->MAIN(91)  
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,486872819,TSBROWSE:NEW(1560)->_DEFINETBROWSE(314)->_TBROWSE(559)->MAIN(102)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BRUSH,1511003877,TSBROWSE:SETCOLOR(13377)->TSBROWSE:NEW(1660)->_DEFINETBROWSE(314)->_TBROWSE(559)->MAIN(102)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BRUSH,890246898,_TBROWSE(559)->MAIN(102)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,1308956330,(b)MAIN(96)->_TBROWSE(572)->MAIN(102)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BRUSH,1343231766,(b)MAIN(98)->_TBROWSE(579)->MAIN(102)

У меня большая система, чистку памяти делаю ври входе и выходе в TBROWSE, но всё равно прога ПЕРИОДИЧЕСКИ падает после 4-5 часов работы.
Юзер постоянно открывает, то одну/другую/третью/четвертую таблицу.
Связано ли это с утечкой памяти в TBROWSE ?
Очистку от хендов иконок сделал уже.

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




Пост N: 2319
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 26.05.24 14:10. Заголовок: Andrey пишет: C: ..


Andrey пишет:

 цитата:
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,-184215828,COLUMN_TSB(140)->MAIN(91)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,486872819,TSBROWSE:NEW(1560)->_DEFINETBROWSE(314)->_TBROWSE(559)->MAIN(102)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BRUSH,1511003877,TSBROWSE:SETCOLOR(13377)->TSBROWSE:NEW(1660)->_DEFINETBROWSE(314)->_TBROWSE(559)->MAIN(102)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BRUSH,890246898,_TBROWSE(559)->MAIN(102)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BMP,1308956330,(b)MAIN(96)->_TBROWSE(572)->MAIN(102)
C:\MiniGUI_24.05\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BRUSH,1343231766,(b)MAIN(98)->_TBROWSE(579)->MAIN(102)


Эти ресурсы должны очищаться с помощью метода Destroy() в классе TSBROWSE.
Но этот метод НЕ срабатывает, поскольку TBROWSE не получает от системы сообщение WM_DESTROY.
Я попытался сделать этот метод деструктором класса, но он все равно НЕ отрабатывает.
Сейчас ищу другой способ запустить этот метод на выполнение призакрытии окна, которое содержит элемент управления TBROWSE.

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




Пост N: 4577
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.05.24 15:01. Заголовок: gfilatov2002 пишет С..


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


Так должен срабатывать цикл WM_DESTROY окна, т.е.
 
****************************************************************************
CASE WM_DESTROY
****************************************************************************

i := AScan ( _HMG_aFormHandles , hWnd )

IF i > 0

#ifndef __XHARBOUR__
// Remove All HMG_* Properties
IF Len( EnumProps( hWnd ) ) > 0
EnumPropsEx( hWnd, {|hWnd, cPropName, hHandle| HB_SYMBOL_UNUSED( hHandle ), ;
iif( hb_LeftEqI( cPropName, "HMG_" ), RemoveProp( hWnd, cPropName ), Nil ), .T. } )
ENDIF
#endif
// Remove Child Controls
FOR EACH r IN _HMG_aControlParentHandles
IF r == hWnd
x := hb_enumindex ( r )
IF _HMG_aControlType [x] == "MESSAGEBAR"
_ReleaseControl ( "StatusBar" , GetParentFormName( x ) )
ELSE
_EraseControl ( x , i )
ENDIF
ENDIF
NEXT

...

_HMG_aControlType[ k ] := "TBROWSE"
_HMG_aControlNames[ k ] := ControlName
_HMG_aControlHandles[ k ] := ControlHandle
_HMG_aControlParenthandles[ k ] := ParentFormHandle
_HMG_aControlIds[ k ] := oBrw
...
имеем, значит имеем и _HMG_aControlIds[ k ]:Destroy()

PS. Добавить в _EraseControl ( i, p ) обработку CASE t == 'TBROWSE'


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




Пост N: 2320
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 26.05.24 16:23. Заголовок: SergKis пишет: Доба..


SergKis пишет:

 цитата:
Добавить в _EraseControl ( i, p ) обработку CASE t == 'TBROWSE'


Да, так получилось сделать
Уже намного лучше.
Но осталось удалить BRUSH, который создается в методе SetColor() класса TControl

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




Пост N: 4578
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.05.24 16:41. Заголовок: gfilatov2002 Но оста..


gfilatov2002
 цитата:
Но осталось удалить BRUSH, который создается в методе SetColor() класса TControl


FUNCTION _DefineTBrowse добавил
 
IF HB_ISARRAY( aBrush ) .AND. Len( aBrush ) > 2
IF oBrw:hBrush != NIL
DeleteObject( oBrw:hBrush )
ENDIF

oBrw:hBrush := CreateSolidBrush( aBrush[ 1 ], aBrush[ 2 ], aBrush[ 3 ] )
ENDIF
/* BK end */
...
METHOD Enabled( lEnab ) CLASS TSBrowse
...
DeleteObject( ::hBrush )

::hBrush := CreateSolidBrush( GetRed( ::nClrPane ), GetGreen( ::nClrPane ), GetBlue( ::nClrPane ) )
IF ::lSelector .AND. ::lDrawSpecHd
::nClrSpcHdBack := ::nCLR_HGRAY
ENDIF

ELSE
...
но с ::hBrush не все понятно, т.к. есть места TControl.prg без DeleteObject( ::hBrush ) как пример
METHOD Colors( hDC ) CLASS TControl

DEFAULT ::nClrText := GetTextColor( hDC ), ;
::nClrPane := GetBkColor( hDC ), ;
::hBrush := CreateSolidBrush( GetRed( ::nClrPane ), GetGreen( ::nClrPane ), GetBlue( ::nClrPane ) )

SetTextColor( hDC, ::nClrText )
SetBkColor( hDC, ::nClrPane )

RETURN ::hBrush
Если поискать "CreateSolidBrush" в prg, то есть и др. места ...

PS. Если взять простой вариант окна MDI, то тоже остается BRUSH не освобожденный
DEFINE WINDOW &cForm AT nY, nX WIDTH nW HEIGHT nH TITLE om:cTitle ;
MINWIDTH nWm MINHEIGHT nHm ;
MAIN MDI TOPMOST ;
BACKCOLOR cBClr ;
ON INIT _wPost( 0) ;
ON RELEASE _wSend(90) ;
ON INTERACTIVECLOSE ( _wSend(98), This.Cargo:lClose )
This.Cargo := oHmgData() ; oMain := This.Object

This.Cargo:lClose := .T.
...
END WINDOW

IF lCenter ; CENTER WINDOW &cForm
ENDIF

ACTIVATE WINDOW &cForm

RETURN NIL


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




Пост N: 2321
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 26.05.24 17:09. Заголовок: SergKis пишет: FUNC..


SergKis пишет:

 цитата:
FUNCTION _DefineTBrowse добавил


Спасибо за помощь!

Сейчас остался не удаленным только один BRUSH

 цитата:
c:\minigui\SAMPLES\Advanced\Tsb_oHmgData\demo.exe -- BRUSH,-904917253,_TBROWSE(559)->MAIN(102)



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




Пост N: 4579
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.05.24 17:30. Заголовок: gfilatov2002 пишет С..


gfilatov2002 пишет
 цитата:
Сейчас остался не удаленным только один BRUSH


С ним, пока и не понятно, т.к. _TBROWSE(559) ->
DEFINE TBROWSE &cBrw OBJ oBrw AT nY, nX WIDTH nW HEIGHT nH CELL ;
...
BRUSH aBrush ;
...
т.е. это
FUNCTION _DefineTBrowse( ControlName, ParentFormName, nCol, nRow, nWidth, nHeight, ;
...
и дальше параметр aBrush смотрим

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




Пост N: 7764
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.05.24 22:20. Заголовок: Вопрос по теме удале..


Вопрос по теме удаления хендлов.
Если я делаю так
      LOCAL oBrw, oTsb 
....
// построение таблицы
oTsb := oHmgData()
...
oTsb:aBmp1 := { {"bMinus32", "bZero32", "bPlus32"} ,;
{ LoadImage("bMinus32"), LoadImage("bMinus32"), LoadImage("bMinus32")} ,;
, {||блок кода смены картинки}, ... }
....
// --------- хранилище картинок, удаляется после закрытия объекта автоматом ------
:aBitMaps := { Nil, LoadImage("bRecDel16") }

:aColumns[2]:aBitMaps := oTsb:aBmp1[2]
:aColumns[2]:uBmpCell := oTsb:aBmp1[3] // там далее смена картинки по алгоритму в myLoadBmpTsb(...)
....

То нафига НУЖНО удалять хендлы из oTsb:aBmp1 если эта переменная LOCAL и
после закрытия этой функции переменная oTsb удалиться ?????
Или я чего то не знаю ?

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




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


gfilatov2002 пишет:

 цитата:
Сейчас остался не удаленным только один BRUSH


Как успехи ?
У меня в примере в файле checkres.txt (695 байт) остался BRUSH.
А внешней командой можно удалить BRUSH при закрытии окна ?

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




Пост N: 4581
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.05.24 07:58. Заголовок: gfilatov2002 hmg-24..


gfilatov2002
hmg-24.05 Исправил (строки //!!!) Скрытый текст

Сборка примера Advanced\Tsb_oHmgData\demo.prg дает (OBJ удалил)Скрытый текст

Беру версию hmg-24.04, повторяю правки, пересобираю примеры Advanced\Tsb_oHmgData -> все OK!

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




Пост N: 2322
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.05.24 12:58. Заголовок: SergKis пишет: hmg-..


SergKis пишет:

 цитата:
hmg-24.05 Исправил


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

Я уже исправил эту утечку ресурсов похожим кодом.
Заодно поправил код в классе TGetBox, чтобы освобождались ресурсы при выходе из режима редактирования полей.

Не очень понятна необходимость присваивать

 цитата:
::hBrush := NIL //!!!


если в следующей строке кода мы снова назначаем

 цитата:
::hBrush := CreateSolidBrush( GetRed( ::nClrPane ), GetGreen( ::nClrPane ), GetBlue( ::nClrPane ) )



У меня происходит освобождение ресурсов и без этой строки

 цитата:
::hBrush := NIL //!!!




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




Пост N: 4582
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.05.24 13:07. Заголовок: gfilatov2002 пишет У..


gfilatov2002 пишет
 цитата:
У меня происходит освобождение ресурсов и без этой строки


 
If ::hBrush != nil
DeleteObject( ::hBrush ) // Alen Uzelac 13.09.2012
::hBrush := NIL //!!!
DoEvents() //!!!

EndIf

Без выделенной строки сообщение BRUSH из txt файла не уходило, сделав DoEvents(), условную задержку,
все стало работать. Поставил везде ::hBrush := NIL, как вариант принудительного сброса адреса и выполненных
доп. команд.

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




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


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


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




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


SergKis пишет:

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


Идея понятна, но после этих изменений начались проблемы с цветом заголовков и подвала - везде черный цвет.
Вернул старый файл обратно - все стало нормально...

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




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


gfilatov2002 пишет
 цитата:
начались проблемы с цветом заголовков и подвала - везде черный цвет.


1. добавить проверку входного массива
 
IF HB_ISARRAY( aColors ) .AND. Len( aColors ) > 0
IF HB_ISARRAY( aColors[ 1 ] )
FOR EACH aClr IN aColors
IF HB_ISNUMERIC( aClr[ 1 ] ) .AND. aClr[ 1 ] > 0 .AND. aClr[ 1 ] <= Len( aTmpColor )
IF aClr[ 2 ] != NIL
aTmpColor[ aClr[ 1 ] ] := aClr[ 2 ]
ENDIF

ENDIF
NEXT
ELSE
AEval( aColors, {| bColor, nEle | iif( bColor != NIL, aTmpColor[ nEle ] := bColor, )} )

//AEval( aColors, {| bColor, nEle | aTmpColor[ nEle ] := bColor } )
ENDIF
ENDIF

2. входной массив формировать
FUNCTION _DefineTBrowse( ControlName, ParentFormName, nCol, nRow, nWidth, nHeight, ;
...
LOCAL aTmpColor := Array( 0 ), aClr
...
IF Type( '_TSB_aControlhWnd' ) != 'A'
PUBLIC _TSB_aControlhWnd := {}, _TSB_aControlObjects := {}, _TSB_aClientMDIhWnd := {}
ENDIF

IF HB_ISARRAY( aColors ) .AND. Len( aColors ) > 0
/*
IF 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
*/
aTmpColor := aColors
ENDIF

IF ValType( fontcolor ) != "U"
AAdd( aTmpColor, {{ 1, RGB( fontcolor[ 1 ], fontcolor[ 2 ], fontcolor[ 3 ] ) }} )
//aTmpColor[ 1 ] := RGB( fontcolor[ 1 ], fontcolor[ 2 ], fontcolor[ 3 ] )
ENDIF

IF ValType( backcolor ) != "U"
AAdd( aTmpColor, {{ 2, RGB( backcolor[ 1 ], backcolor[ 2 ], backcolor[ 3 ] ) }} )
//aTmpColor[ 2 ] := RGB( backcolor[ 1 ], backcolor[ 2 ], backcolor[ 3 ] )
ENDIF

IF Empty( aTmpColor ) ; aTmpColor := NIL
ENDIF
...

Сейчас задание цветов входным параметром массива надо подправлять методом :SetColor()

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




Пост N: 2324
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 02.06.24 13:05. Заголовок: SergKis пишет: доба..


SergKis пишет:

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


Пошел по этому пути, вроде отрабатывает нормально.
Благодарю за помощь

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




Пост N: 2325
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.06.24 15:42. Заголовок: Завершена подготовка..


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

Что нового:
- исправление обнаруженных ошибок;
- добавлена новая функция HMG_GetUniqueName( [<NamePrefix>] ) и идентификатор пустого имени NUL для создания элемента управления без необходимости указания его имени (удобно, например, для безымянных меток Label);
- важное обновление библиотеки TSBrowse (спасибо, Сергей!)
- обновлены Харбор, библиотеки SqlRdd, PdfPrinter и Sqlite3;
- добавлены новые и обновлены старые примеры для демонстрации новых возможностей библиотеки.

Желаю всем хорошего дня

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 103
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет