Форум » 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

Haz: gfilatov2002 пишет: Теперь пример работает нормально попереключал сортировку в своем проекте с последними изменениям - все отлично работает. Видимо в примере действительно проблема была

SergKis: Haz пишет пока не сложилось как понять что oCell принадлежит видимой части ( окну ) бровса Так в теории будет выглядеть функция (метод такой вряд ли нужен, слишком много вариантов, что можно делать)[pre2] FUNC FastDrawCheck( oBrw ) Local oCols := oKeyData():aKey := hb_HSort( oBrw:aFastDrawCell ) Local aCols := oCols:GetAll(.F.) Local cAls := oBrw:cAlias Local aCol, nCol, oCol, cCell Local xData, uData, nRec Local lVisi, lEque FOR EACH aCol IN aCols cCell := aCol[1] oCol := aCol[2] nRec := val( left(cCell, At(".", cCell)-1) ) lEque := .F. lVisi := .F. uData := Nil xData := oCol:oCell:uValue If nRec != (cAls)->( RecNo() ) (cAls)->( dbGoto(nRec) ) EndIf If nRec == (cAls)->( RecNo() ) uData := oBrw:GetValue(oCol:cName) lEque := xData == uData lVisi := AScan( oBrw:aRowPosAtRec, nRec ) > 0 // видимость на екране IF ! lEque // ... ENDIF IF lVisi // ... ENDIF EndIf AAdd( aCol, lVisi ) AAdd( aCol, lEque ) AAdd( aCol, xData ) AAdd( aCol, uData ) NEXT RETURN aCols [/pre2]

SergKis: gfilatov2002 Посмотрел h_tbrowse.zip, небольшие правки[pre2] METHOD DrawLine( xRow, lDrawCell ) CLASS TSBrowse ... IF ::lRowPosAtRec IF Empty( ::aRowPosAtRec ) .OR. Len( ::aRowPosAtRec ) != ::nRowCount() ::aRowPosAtRec := Array( ::nRowCount() ) AFill( ::aRowPosAtRec, 0 ) ENDIF IF ::nLen == 0 .OR. xRow == 0 .OR. xRow > Len( ::aRowPosAtRec ) ELSE ::aRowPosAtRec[ xRow ] := ( nAt := ::nAtPos ) ENDIF ENDIF ... Не обязательно, но так лучше - убрать лишнее IF Empty( oColumn:oCell ) oColumn:oCell := TSBcell():New() ENDIF oCell := oColumn:oCell oCell:nRow := xRow oCell:nCol := nStartCol ... oCell:nCursor := 0 // 31 Rect cursor oCell:lInvertColor := .F. // 32 Invert color ... METHOD DrawSelect( xRow, lDrawCell ) CLASS TSBrowse ... IF ::lRowPosAtRec .AND. Len( ::nRowCount() ) > 0 IF Empty( ::aRowPosAtRec ) .OR. Len( ::aRowPosAtRec ) != ::nRowCount() ::aRowPosAtRec := Array( ::nRowCount() ) AFill( ::aRowPosAtRec, 0 ) ENDIF IF ::nLen == 0 .or. xRow == 0 .OR. xRow > Len( ::aRowPosAtRec ) ELSE ::aRowPosAtRec[ xRow ] := ( nAt := ::nAtPos ) ENDIF ENDIF ... IF Empty( oColumn:oCell ) oColumn:oCell := TSBcell():New() ENDIF oCell := oColumn:oCell oCell:nRow := nRowPos oCell:nCol := nStartCol ... oCell:nCursor := nCursor // 31 Rect cursor oCell:lInvertColor := !( ::lCellBrw .AND. nJ != ::nCell ) // 32 Invert color [/pre2]


SergKis: gfilatov2002 Посмотрел h_tbrowse.zip, небольшие правки[pre2] METHOD DrawLine( xRow, lDrawCell ) CLASS TSBrowse ... IF ::lRowPosAtRec IF Empty( ::aRowPosAtRec ) .OR. Len( ::aRowPosAtRec ) != ::nRowCount() ::aRowPosAtRec := Array( ::nRowCount() ) AFill( ::aRowPosAtRec, 0 ) ENDIF IF ::nLen == 0 .OR. xRow == 0 .OR. xRow > Len( ::aRowPosAtRec ) ELSE ::aRowPosAtRec[ xRow ] := ( nAt := ::nAtPos ) ENDIF ENDIF ... Не обязательно, но так лучше - убрать лишнее IF Empty( oColumn:oCell ) oColumn:oCell := TSBcell():New() ENDIF oCell := oColumn:oCell oCell:nRow := xRow oCell:nCol := nStartCol ... oCell:nCursor := 0 // 31 Rect cursor oCell:lInvertColor := .F. // 32 Invert color ... METHOD DrawSelect( xRow, lDrawCell ) CLASS TSBrowse ... IF ::lRowPosAtRec .AND. Len( ::nRowCount() ) > 0 IF Empty( ::aRowPosAtRec ) .OR. Len( ::aRowPosAtRec ) != ::nRowCount() ::aRowPosAtRec := Array( ::nRowCount() ) AFill( ::aRowPosAtRec, 0 ) ENDIF IF ::nLen == 0 .or. xRow == 0 .OR. xRow > Len( ::aRowPosAtRec ) ELSE ::aRowPosAtRec[ xRow ] := ( nAt := ::nAtPos ) ENDIF ENDIF ... IF Empty( oColumn:oCell ) oColumn:oCell := TSBcell():New() ENDIF oCell := oColumn:oCell oCell:nRow := nRowPos oCell:nCol := nStartCol ... oCell:nCursor := nCursor // 31 Rect cursor oCell:lInvertColor := !( ::lCellBrw .AND. nJ != ::nCell ) // 32 Invert color [/pre2]

SergKis: Опять 2а раза отправилось

gfilatov2002: SergKis пишет: METHOD DrawSelect( xRow, lDrawCell ) CLASS TSBrowse ... IF ::lRowPosAtRec .AND. Len( ::nRowCount() ) > 0 IF Empty( ::aRowPosAtRec ) .OR. Len( ::aRowPosAtRec ) != ::nRowCount() ::aRowPosAtRec := Array( ::nRowCount() ) AFill( ::aRowPosAtRec, 0 ) ENDIF IF ::nLen == 0 .or. xRow == 0 .OR. xRow > Len( ::aRowPosAtRec ) Эта правка не нужна, поскольку выше по тексту уже идет проверка: ELSEIF ::nLen > 0

SergKis: Игорь Уточнение по видимости колонки lVisi := AScan( oBrw:aRowPosAtRec, nRec ) > 0 .and. AScan( oBrw:aDrawCols, oBrw:nColumn(oCol:cName) ) // видимость

kkg: gfilatov2002 Григорий, пересмотрел изменения которые я вношу, возможно данное примете в стандарт если будет интересно сообществу HbXlsXml [pre2] CREATE CLASS ExcelWriterXML_Sheet VAR id VAR aAddSheet INIT {} VAR cells INIT { => } VAR colWidth INIT { => } ... METHOD ExcelWriterXML_Sheet:getSheetXML( handle ) ... xml += " </Table>" + hb_eol() if valtype(::aAddSheet) == 'A' .and. len(::aAddSheet)>0 for ir = 1 to len(::aAddSheet) xml += ::aAddSheet[ir] + hb_eol() next endif xml += "</Worksheet>" + hb_eol() ... я использую для передачи "заморозки" шапки, nFreeze и АвтоФильтра aadd(oSh,' <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">') aadd(oSh,' <Unsynced/>') aadd(oSh,' <FreezePanes/>') aadd(oSh,' <FrozenNoSplit/>') aadd(oSh,' <SplitHorizontal>+[номер строки]+</SplitHorizontal>') aadd(oSh,' <TopRowBottomPane>+[номер строки]+</TopRowBottomPane>') aadd(oSh,' <SplitVertical>'+[номер колонки]+'</SplitVertical>') aadd(oSh,' <LeftColumnRightPane>'+[номер колонки]+'</LeftColumnRightPane>') aadd(oSh,' <ActivePane>0</ActivePane>') aadd(oSh,' <Panes>') aadd(oSh,' <Pane>') aadd(oSh,' <Number>3</Number>') aadd(oSh,' </Pane>') aadd(oSh,' <Pane>') aadd(oSh,' <Number>1</Number>') aadd(oSh,' <ActiveCol>2</ActiveCol>') aadd(oSh,' </Pane>') aadd(oSh,' <Pane>') aadd(oSh,' <Number>2</Number>') aadd(oSh,' </Pane>') aadd(oSh,' <Pane>') aadd(oSh,' <Number>0</Number>') aadd(oSh,' <ActiveCol>0</ActiveCol>') aadd(oSh,' </Pane>') aadd(oSh,' </Panes>') aadd(oSh,' <ProtectObjects>False</ProtectObjects>') aadd(oSh,' <ProtectScenarios>False</ProtectScenarios>') aadd(oSh,' </WorksheetOptions>') aadd(oSh,' <AutoFilter x:Range="R+[строка]+C+[колонка]+:R+[строка]+C'+[колонка]+'" xmlns="urn:schemas-microsoft-com:office:excel">') aadd(oSh,' </AutoFilter>') [/pre2]

kkg: gfilatov2002 пересобрал с последними изменениями есть поправка [pre2] METHOD DrawSelect( xRow, lDrawCell ) CLASS TSBrowse ... [4622] IF ::lRowPosAtRec .AND. ::nRowCount() > 0 // без len() [/pre2]

gfilatov2002: kkg пишет: есть поправка Принято

SergKis: Haz пишет предлагаю добавить Игорь, а чем не подошло METHOD FastDrawClear( cCell ) CLASS TSBrowse описанный выше cCell := .T. - очищает hash cCell := :nAtPos - удаляет колонки строки заданной cCell := hb_ntos(:nAtPos)+"."+hb_ntos( oCol:nId ) - удаляет колонку

SergKis: PS Например AEval(oBrw:aRowPosAtRec, {|nat| oBrw:FastDrawClear(nat) }) удалит все колонки для строк, участвующих в Refresh()

Haz: SergKis пишет: Игорь, а чем не подошло Видимо тем что отвлекался от этой темы ( работы много ) и не обновил у себя исходник. В своем ничего не нашел и быстренько написал. Метод есть , все устраивает Удалю пост чтоб не путать

gfilatov2002: Подготовил первый RC для новой сборки 20.10 Кратко, что нового: [pre2] * Added the new functions for Windows GDI objects memory release. It will activate the GDI objects recording and call CheckRes() to generate the checkres.txt log file on the application quit. Note: This feature will work after setting of debugging mode via the Harbour command Set( _SET_DEBUG, .T. ) or AltD( 1 ). * Fixed detected resource leakage of GDI objects at the release of Main form with usage of the new MiniGUI Resources control system. * TOOLBAR control: toolbuttons supports an optional ADJUST clause. * Revised a hot mouse tracking in the ButtonEx control. * Revised a releasing of the AniGif control. * Synchronized Extended HMG for compatibility with Official HMG: - COMBOBOXEX supports the optional clause NOTRANSPARENT; - IMAGE CHECKBUTTON supports the optional clause NOTRANSPARENT; - TAB control supports the optional clause NOTRANSPARENT; - TREE control supports the optional clause NOTRANSPARENT. * Added the optional color's constants to the header files i_color.ch and i_wincolor.ch. * Adaptation FiveWin Class TSBrowse 9.0 in HMG: - added the new variables :lFastDrawCell, :aFastDrawCell and :lFastDrawClear, method :FastDrawClear() for high-speed HASH-based data refreshing in the TSBrowse class; Note: you should set :lFastDrawCell to .T. for switch ON the above mode. Thanks a lot for this GREAT contribution to SergKis and Haz! * Updated Sqlite3 library. * Added the new interesting samples and updated some examples. [/pre2] P.S. Желаю всем доброго здоровья и хорошего дня

gfilatov2002: Опубликована новая сборка 20.10 для BCC 5.8.2 и компиляторов Harbour и xHarbour. Базовый дистрибутив находится по адресу http://hmgextended.com/files/CONTRIB/hmg-20.10-setup.exe Огромная благодарность Сергею Киселеву и Игорю Назарову за помощь при подготовке этой сборки

SergKis: gfilatov2002 Поправьте, слетает Tsb_DemoMdi при Alt+F4, .т.к. в окнах _HMG_aFormMiscData1[ k ] := {} (может еще где) [pre2] FUNCTION ReleaseAllWindows () ... IF Len( _HMG_aFormMiscData1[ i ] ) > 0 .and. _HMG_aFormMiscData1 [ i ] [ 1 ] != NIL DestroyIcon ( _HMG_aFormMiscData1 [ i ] [ 1 ] ) ENDIF IF Len( _HMG_aFormMiscData1[ i ] ) > 2 .and. ! Empty ( _HMG_aFormMiscData1 [ i ] [ 3 ] ) DeleteObject ( _HMG_aFormMiscData1 [ i ] [ 3 ] ) ENDIF ... [/pre2]

SergKis: PS Наверно, надо вставить освобождение и в h_events.prg на CASE WM_DESTROY добавить

gfilatov2002: SergKis пишет: Поправьте, слетает Tsb_DemoMdi при Alt+F4 Поправил, конечно Благодарю за помощь P.S. Сделал тихое обновление этой сборки с учетом найденных ошибок...

gfilatov2002: Выпустил 1-е обновление сборки 20.10 Что нового: [pre2] * Fixed: Browse control without PICTURE option had a wrong formatting for the fields with negative numbers (introduced in the build 20.05). Bug was reported by Pablo Jalabert. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\Browse_4) * Fixed: Correction in the Imagelist ADD IMAGE commands. Syntax: ADD IMAGE <image> [ MASK <mask> ] TO <control> OF <parent> ADD MASKEDIMAGE <image> [ COLOR <aColor> ] TO <control> ; OF <parent> Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\TOOLBAR_3) * Enhanced: TOOLBAR control: tool buttons respect the BALLOON style of tooltips and the command SET TOOLTIP [ ACTIVATE ] <ON | OFF>. Requested by Ivanil Marcelino <ivanil/at/linkbr.com.br>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\TOOLBAR_2) * Enhanced: ANIGIF control: added support of animated GIF from resources. Requested by Ivanil Marcelino <ivanil/at/linkbr.com.br>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\AniGIF) * Enhanced: BtnTextBox and GetBox controls support Controls Context menu. Requested by Ivanil Marcelino <ivanil/at/linkbr.com.br>. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Modified: Adding the new selected values to the multiple selection Grid was significantly accelerated (noticeable for grids with more than one hundred thousand items). Suggested by HMG user Edward. Contributed by Grigory Filatov <gfilatov@inbox.ru> * New: 'Month Calendar control with the bold days and backcolor' sample. Based upon a contribution of Kevin Carmody <i@kevincarmody.com>. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see demo3.prg in folder \samples\Basic\MONTHCAL) * New: 'MiniGUI ToolBar ImageList Demo' sample. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\TOOLBAR_3) [/pre2]

gfilatov2002: Выложил 2-е обновление сборки 20.10 В этом обновлении добавил новый элемент управления - PROGRESSWHEEL. Для его усовершенствования требуется помощь сишника - Петр, сможете помочь



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