Форум » GUI » Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение) » Ответить

Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)

gfilatov: Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

Andrey: SergKis пишет: Можно получать сейчас так aSup := oBrw:DrawSuper( .F. ) FOR EACH oCel IN aSup nFrom := oBrw:aSuperHead[ hb_enumindex( oCel ) ][1] // строка 250 nTo := oBrw:aSuperHead[ hb_enumindex( oCel ) ][2] Выдаёт ошибку: Error BASE/1132 Bound error: array access Args: [1] = A { ... } length: 7 [2] = N 8 --------------------------------- Stack Trace --------------------------------- Called from MYGETTSBSUPH(250) in module: MenuExcel7.prg Called from MYGETTSBCONTENT(166) in module: MenuExcel7.prg

SergKis: Andrey пишет Выдаёт ошибку: А на подумать можно о сообщении ?[pre2] aSup := :DrawSuper( .F. ) FOR EACH oCel IN aSup nCol := hb_enumindex(oCel) nFrom := -1 nTo := -1 IF nCol <= Len(:aSuperHead) nFrom := :aSuperHead[ nCol ][1] nTo := :aSuperHead[ nCol ][2] ENDIF hFnt := oCel:hFont результат (цифры перед текстом) ==== решение только для dbf =========================== F9 "быстрый" доступ к данным тсб через объекты класса TSBcell oCol:oCellHead, oCol:oCellEnum, oCol:oCell, oCol:oCellFoot :lDrawLine = .T. Log file = _MsgLog.txt ~ DrawSuper ~ 1 3 0 50 1 {128, 0, 0} {192, 192, 192} {128, 128, 128} 1 1 '' ~ 2 3 50 585.0 1 {128, 0, 0} {192, 192, 192} {128, 128, 128} 2 6 Adres ~ 3 3 635.0 629.0 1 {128, 0, 0} {192, 192, 192} {128, 128, 128} 7 10 01.01.14 - 31.03.20 ~ 4 3 1264.0 0 1 {128, 0, 0} {192, 192, 192} {128, 128, 128} 11 16 Январь 2020 ~ 5 3 1264.0 0 1 {128, 0, 0} {192, 192, 192} {128, 128, 128} 17 22 Март 2020 ~ 6 3 1264.0 0 1 {128, 0, 0} {192, 192, 192} {128, 128, 128} 23 23 21-15 ~ 7 3 1264.0 0 1 {128, 0, 0} {192, 192, 192} {128, 128, 128} 24 24 -o- ~ 8 3 1264.0 -1 1 {128, 0, 0} {192, 192, 192} {128, 128, 128} -1 -1 '' [/pre2]

Andrey: SergKis пишет: А на подумать можно о сообщении ? Всю думалку заказчик сломал. Мозги совсем не работают... СПАСИБО !


Andrey: Ещё один вопрос возник по классу TSBcell Можно получить формат колонки для вывода в Эксель, т.е. PICTURE колонки ? [pre2] FOR nAt := 1 TO :nLen :DrawLine() aLine := {} FOR nCol := 1 TO :nColCount() oCol := :aColumns[ nCol ] oCel := oCol:oCell hFnt := oCel:hFont aFore := oCel:nClrFore aBack := oCel:nClrBack xVal := oCel:cValue cType := Valtype(oCel:uValue) cPict := ???? AADD( aLine, { aFore, aBack, hFnt, xVal, cType, cPict } ) NEXT AADD( aRet, aLine ) // строка таблицы :GoDown() NEXT[/pre2]

SergKis: Andrey пишет Можно получить формат колонки для вывода в Эксель, т.е. PICTURE колонки ? cPict := oCol:cPicture

Andrey: СПАСИБО !

SergKis: gfilatov2002 Небольшая правка scale фонтов [pre2] FUNCTION oDlu4Font( nFontSize, lDlu2Pix ) LOCAL nPrcW, nPrcH, aDim LOCAL aScale := { { 8, 85, 75}, ; { 9, 90, 85}, ; { 10, 95, 85}, ; { 11, 100, 90}, ; { 12, 110, 95}, ; { 13, 115, 100}, ; { 14, 120, 110}, ; { 15, 130, 110}, ; { 16, 140, 120}, ; { 17, 145, 120}, ; { 18, 150, 130}, ; { 19, 160, 130}, ; { 20, 170, 145}, ; { 21, 175, 145}, ; { 22, 180, 150}, ; { 23, 190, 155}, ; { 24, 200, 160}, ; { 25, 205, 170}, ; { 26, 210, 180} ; } ... METHOD UnitsToPixels( nPrcW, nPrcH ) CLASS TDlu2Pix DEFAULT nPrcW := hb_defaultValue( nPrcW, ::nScaleWidth ), ; nPrcH := hb_defaultValue( nPrcH, ::nScaleHeight ) ::nScaleWidth := nPrcW ::nScaleHeight := nPrcH ::nPixWidth := ::DLU2PixW( ::nUnitWidth, nPrcW ) ... Предложение добавить i_font.ch #command SET FONT TO <fontname> , <fontsize>; => ; _HMG_DefaultFontName := <fontname> ; _HMG_DefaultFontSize := <fontsize> ; oDlu2Pixel( , , <fontsize> ) [/pre2] Пример применения BASIC\GetBox_3 тут https://TransFiles.ru/i36zt

gfilatov2002: SergKis пишет: Предложение добавить OK, добавлю во 2-е обновление сборки 20.05 Благодарю за помощь

gfilatov2002: Выложил обновление для сборки 20.05 (Update 2) с учетом последних наработок Базовый дистрибутив для BCC 5.8.2 находится по адресу http://hmgextended.com/files/CONTRIB/hmg-20.05-setup.exe Благодарю за ваше внимание

SergKis: gfilatov2002 Тут неточность[pre2] METHOD AddSuperHead( nFromCol, nToCol, uHead, nHeight, aColors, l3dLook, uFont, uBitMap, lAdjust, lTransp, ; ... uFont := iif( uFont != Nil, iif( ValType( uFont ) == "O", uFont:hFont, uFont /* ? */ ), hFont ) ... было hFont := If( uFont != Nil, uFont, hFont ) и переменная DATA hFontSupHd // super header font больше подходит, чем DATA hFontSupHd AS NUMERIC // super header font [/pre2]

SergKis: PS Или такой вариант, что бы 0 не проскочил [pre2] uFont := iif( ! Empty(uFont), iif( ValType( uFont ) == "O", uFont:hFont, uFont ), hFont ) [/pre2]

SergKis: PS2 И логичнее сразу сделать [pre2] hFont := iif( ! Empty(uFont), iif( ValType( uFont ) == "O", uFont:hFont, uFont ), hFont ) и убрать If ! Empty( ::aColumns ) hFont := iif( ValType( ::aColumns[ nFromCol]:hFontHead ) == "O", ::aColumns[ nFromCol]:hFontHead, ; iif( ::aColumns[ nFromCol]:hFontHead != Nil, ::aColumns[ nFromCol]:hFontHead, hFont ) ) endif // hFont := iif( uFont != Nil, uFont, hFont ) [/pre2]

SergKis: gfilatov2002 Правка закраски фантомной колонки[pre2] METHOD DrawHeaders( lFooters, lDrawCell ) CLASS TSBrowse ... If ::oPhant == Nil ... Self ) ::oPhant:cName := "oPhant" Else ... METHOD DrawLine( xRow, lDrawCell ) CLASS TSBrowse ... If ::oPhant == Nil ... Self ) ::oPhant:cName := "oPhant" Else ... METHOD DrawSelect( xRow, lDrawCell ) CLASS TSBrowse ... If ::oPhant == Nil ... Self ) ::oPhant:cName := "oPhant" Else ... If lNoLite nClrFore := ::GetValProp( oColumn:nClrFocuFore, nClrText, nJ, ::nAt ) nClrBack := ::GetValProp( oColumn:nClrFocuBack, nClrPane, nJ, ::nAt ) nCursor := 0 If ! empty(oColumn:cName) .and. oColumn:cName == "oPhant" nClrBack := nClrPane ElseIf ValType( nClrBack ) == "N" .and. nClrBack < 0 nClrBack := -nClrBack EndIf Else ... [/pre2]

gfilatov2002: SergKis пишет: логичнее сразу сделать ... Правка закраски фантомной колонки Все правки приняты. Благодарю за помощь

SergKis: gfilatov2002 В HMG_DrawIcon() сделана веточка [pre2] ... ELSEIF ISSTRING( icon ) DrawIconEx( FormHandle, Col, Row, LoadIconByName( icon, w, h ), w, h, rgb, .T. ) AAdd( _HMG_aFormGraphTasks [ i ] , {|| DrawIconEx( FormHandle, Col, Row, LoadIconByName( icon, w, h ), w, h, rgb, .T. ) } ) ENDIF [/pre2] Это же утечка памяти на LoadIconByName(). У себя сделал [pre2] h_window.prg FUNCTION _DefineWindow ( FormName, Caption, x, y, w, h, nominimize, nomaximize, ; ... _HMG_aFormMiscData1 [ k ] := {hnotifyicon, cursor, {}} ... AAdd ( _HMG_aFormMiscData1, {hnotifyicon, cursor, {}} ) ... FUNCTION _DefineModalWindow ( FormName, Caption, x, y, w, h, Parent, nosize, nosysmenu, nocaption, aMin, aMax, ; ... _HMG_aFormMiscData1 [ k ] := {NIL, cursor, {}} ... AAdd ( _HMG_aFormMiscData1, {NIL, cursor, {}} ) ... FUNCTION _DefineSplitChildWindow ( FormName, w, h, break, grippertext, nocaption, title, fontname, fontsize, gotfocus, lostfocus, ; ... _HMG_aFormMiscData1 [ k ] := {NIL, cursor, {}} ... AAdd ( _HMG_aFormMiscData1, {NIL, cursor, {}} ) ... h_windowMDI.prg FUNCTION _DefineChildMDIWindow ( FormName, x, y, w, h, nominimize, nomaximize, ; ... _HMG_aFormMiscData1 [k] := {NIL, cursor, {}} ... AAdd ( _HMG_aFormMiscData1 , {NIL, cursor, {}} ) ... h_events.prg ... CASE WM_DESTROY ... NEXT // Delete handle hmg_drawicon(...) IF ISARRAY( _HMG_aFormMiscData1[ i ] ) .and. Len( _HMG_aFormMiscData1[ i ] ) > 2 IF ISARRAY( _HMG_aFormMiscData1[ i, 3 ] ) .and. Len( _HMG_aFormMiscData1[ i, 3 ] ) > 0 FOR EACH x IN _HMG_aFormMiscData1[ i, 3 ] DeleteObject( x ) NEXT ENDIF ENDIF // Delete Brush DeleteObject ( _HMG_aFormBrushHandle [ i ] ) ... h_draw.prg ... FUNCTION HMG_DrawIcon( window, icon, row, col, w, h, rgb, transparent ) LOCAL FormHandle LOCAL backcolor LOCAL i, name ... hb_default( @rgb, GetSysColor( COLOR_BTNFACE ) ) IF ISSTRING( icon ) name := icon icon := LoadIconByName( icon, w, h ) ENDIF IF ISNUMERIC( icon ) DrawIconEx( FormHandle, Col, Row, icon, w, h, rgb, .F. ) AAdd( _HMG_aFormGraphTasks [ i ] , {|| DrawIconEx( FormHandle, Col, Row, icon, w, h, rgb, .F. ) } ) IF ! Empty(name) AAdd( _HMG_aFormMiscData1[ i, 3 ], icon ) ENDIF /* ELSEIF ISSTRING( icon ) DrawIconEx( FormHandle, Col, Row, LoadIconByName( icon, w, h ), w, h, rgb, .T. ) AAdd( _HMG_aFormGraphTasks [ i ] , {|| DrawIconEx( FormHandle, Col, Row, LoadIconByName( icon, w, h ), w, h, rgb, .T. ) } ) */ ENDIF ... [/pre2]

Andrey: Привет всем. Григорий ! Удаление записи в методе :SetDeleteMode( .T., .T. ) - запрос идет через MsgYesNo() Поменять на AlertYesNo() - можно ? Или переключатель сделать какой то ? А то при удалении/вставки разные окна. Как то не то.

SergKis: Andrey Почему не смотришь исходники, примеры, когда что то применяешь и есть не ясность или вопросы. Сканируй примеры Advanced Far -> Alt_F7 -> *.prg "SetDeleteMode" и просмотри найденное. Открой h_tbrowse.prg, найди метод SetDeleteMode() и смотри параметры Если в твоем редакторе сложно, открывай hbedit от А.Кресина Alt+L и весь список ф-й, методов с поиском перед глазами

Andrey: Посмотрел. Нет такого - поменять MsgYesNo() на AlertYesNo() ! Это нужно сделать в [pre2]METHOD DeleteRow( lAll ) CLASS TSBrowse ..... If ::lConfirm .and. !lAll .and.; ! MsgYesNo( iif( ::lIsDbf, ::aMsg[ 37 ], ::aMsg[ 38 ] ), ::aMsg[ 39 ] ) [/pre2]

Dima: Andrey пишет: Посмотрел Не там смотрел а по вопросу можно хоть чёрта лысого туда сунуть

SergKis: Andrey пишет Посмотрел. Нет такого - поменять MsgYesNo() на AlertYesNo() ! "В огороде бузина, а в Киеве — дядька" Говорили о :SetDeleteMode(), а унесло куда то ... в сторону. Смотри :SetDeleteMode(...)



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