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

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

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

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

Haz: SergKis пишет: Меня это давно как то совсем не трогает. Трогает трогает Половина кода в примерах твоя

gfilatov2002: Всем кому это интересно Подготовил второй релиз-кандидат для новой сборки библиотеки со следующим списком изменений [pre2] * Fixed: Wrong row position of a WHOLEDROPDOWN menu of a ToolButton which was placed into a Vertical PagerBox control. Bug was reported by Natali Almeida. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\CONTAINERS\PAGERBOX) * Fixed: Revised a bitmap cleaning at the exit from a Preview window in a graph printing module at using of the recent xHarbour compiler. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo at folder \samples\Basic\MAINDEMO_(SYNTAX_I)) * Updated: Synchronized Extended HMG for compatibility with Official HMG: Added the set/get 'Enabled' property for the forms: - ThisWindow|<FormName>.Enabled [ := | --> ] lBoolean There are the following add-ons for a TREE control: - added a new command to support a sorting: TREESORT ControlName OF ParentName [ ITEM nItem ] ; [ RECURSIVE lRecursive ] [ CASESENSITIVE lCaseSensitive ] ; [ ASCENDINGORDER lAscendingOrder ] [ NODEPOSITION nNodePosition ] (see demo in folder \samples\Advanced\DirTree_2) - enhanced Expand/Collapse methods: include recursive clause. Sample code: Form_1.Tree_1.Collapse (Form_1.Tree_1.Value, .T.) // Collapse All Form_1.Tree_1.Expand (Form_1.Tree_1.Value, .T.) // Expand All (see demo in folder \samples\Basic\TreeMenu_2) - added the useful functions (and appropriate properties) below: - TreeItemIsTrueNode(); - TreeItemGetNodeFlag(); - TreeItemIsExpand(); - TreeItemGetRootValue(); - TreeItemGetFirstItemValue(). Based upon a contribution of Claudio Soto <srvet@adinet.com.uy>. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - added the new method AppendRow() in TSBrowse class. Contributed by Sergej Kiselev and Igor Nazarov (see demo.prg in folder \samples\Advanced\Tsb_Basic) * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.25.1 (from 3.25.0dev). Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Harbour Compiler 3.2.0dev (SVN 2018-09-14 15:36): * Updated: OpenSSL wrapper for using of the version 1.0.2p. Contributed by Grigory Filatov <gfilatov@inbox.ru> (look at ReadMe.txt in folder \harbour) * New: 'How to create a child form with a modal behavior' sample. Requested by Anand Gupta on HMG forum. Based upon a contribution of HMG user Edward (see in folder \samples\Basic\ChildAsModal) * New: 'Display of different fonts depending on the screen resolution' sample. Contributed by Verchenko Andrey <verchenkoag@gmail.com> (see in folder \samples\Basic\ScreenMode) * New: 'Tree Menu' sample by Andres Gonzalez Lopez. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\TreeMenu_2) * New: 'Tree Sort Directory' sample by Claudio Soto. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\DirTree_2) * New: 'TSBrowse: network opening of the database' samples. Contributed by Igor Nazarov and Verchenko Andrey (see in folder \samples\Advanced\Tsb_Basic) * Updated: 'Tree with the images' sample. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see ImageTree.prg in folder \samples\Basic\IMAGETREE_2) * Updated: 'Directory Tree' sample by Vladimir Chumachenko. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\IMAGETREE_3) * Updated: 'Progress bar using for showing of DBF's processing' sample. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\PROGRESSBAR_3) * Updated: 'Memory File System usage' sample: - added copying of a memory table to a disk file. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\MEMORY_TABLES). * Updated: 'TSBrowse Export data to a XLS/XML file' sample: - fixed class Tsb2Xml2Xls for export of data to XML file. Contributed by Sergej Kiselev (see Tsb4xml.prg in folder \samples\Advanced\Tsb_Brw2xml) [/pre2] Вероятно, это будет последняя сборка для компилятора BCC 5.51, поскольку поддержка Win 98 уже никому не интересна Сейчас выбираю другой компилятор из - бесплатного Embarcadero C++ 10.1 (32-bit) - платного Embarcadero C++ 7.3 (32-bit) - всем известного MinGW 8.1.0 и склоняюсь ко второму варианту Ваше мнение

SergKis: Вот поправил вариант :AppendRow() [pre2] METHOD AppendRow( lUnlock ) CLASS TSBrowse LOCAL cAlias, bAddRec, xRet, lAdd := .F., lUps := .F. If HB_ISBLOCK( ::bAddBefore ) xRet := Eval( ::bAddBefore, Self ) If HB_ISLOGICAL(xRet) .and. ! xRet lUps := .T. // RETURN lAdd EndIf EndIf Do case case lUps case ::lIsDbf cAlias := ::cAlias bAddRec := If( !Empty( ::bAddRec ), ::bAddRec, {|| ( cAlias )->( dbAppend() ), ! NetErr() } ) If Eval( bAddRec, Self ) // SysRefresh() // ::nLen := ( cAlias )->( Eval( ::bLogicLen ) ) // ::Upstable() // ::Refresh(.T., .T.) lUps := lAdd := .T. EndIf case ::lIsArr bAddRec := If( !Empty( ::bAddRec ), ::bAddRec, {|| aAdd(::aArray, AClone( ::aDefValue ) ), .T. } ) If Eval( bAddRec, Self ) // SysRefresh() // ::nLen := Len( ::aArray ) // ::nAt := ::nLen // ::nRowPos := ::nRowCount() // ::Refresh(.T., .T.) lUps := lAdd := .T. EndIf end If HB_ISBLOCK( ::bAddAfter ) Eval( ::bAddAfter, Self, lAdd ) EndIf If lAdd .and. ::lIsDbf .and. ! empty(lUnlock) ( cAlias )->( dbUnlock() ) EndIf If lUps If ::lIsDbf SysRefresh() ::nLen := ( cAlias )->( Eval( ::bLogicLen ) ) ::Upstable() ::Refresh(.T., .T.) ElseIf ::lIsArr SysRefresh() ::nLen := Len( ::aArray ) ::nAt := ::nLen ::nRowPos := ::nRowCount() ::Refresh(.T., .T.) EndIf EndIf ::SetFocus() RETURN lAdd [/pre2]


SergKis: PS правка[pre2] If HB_ISBLOCK( ::bAddBefore ) xRet := Eval( ::bAddBefore, Self ) If HB_ISLOGICAL(xRet) .and. ! xRet If ::lIsDbf cAlias := ::cAlias EndIf lUps := .T. // RETURN lAdd EndIf EndIf [/pre2]

Haz: SergKis пишет: If lUps If ::lIsDbf SysRefresh() ::nLen := ( cAlias )->( Eval( ::bLogicLen ) ) ::Upstable() ::Refresh(.T., .T.) ElseIf ::lIsArr SysRefresh() ::nLen := Len( ::aArray ) ::nAt := ::nLen ::nRowPos := ::nRowCount() ::Refresh(.T., .T.) EndIf EndIf Тогда так [pre2] If lUps SysRefresh() If ::lIsDbf ::nLen := ( cAlias )->( Eval( ::bLogicLen ) ) ::Upstable() ElseIf ::lIsArr ::nLen := Len( ::aArray ) ::nAt := ::nLen ::nRowPos := ::nRowCount() EndIf ::Refresh(.T., .T.) End [/pre2] Но это уже так - перестановка слагаемых ...

SergKis: PPS Как бы работает, но при :nLen < :nRowCount() перепоказ передергивает курсор через 1ый :nRowPos Моргание наблюдается

SergKis: Haz пишет перестановка слагаемых ... Оптимизация всегда приветствуется

Haz: SergKis пишет: Как бы работает, но при :nLen < :nRowCount() перепоказ передергивает курсор через 1ый :nRowPos Моргание наблюдается Это Upstable() .... можно с цветами поиграть

SergKis: Haz пишет Это рефреш .... можно с цверами поиграть Это понятно, откуда ноги растут. Играть получается надо для фокуса и не в фокусе, оба возможны. Сохранять, ставить CLR_PANE для них, потом восстанавливать ... Словом еще побороться надо. Я пока отваливаюсь, у клиента бяка вылезла - разбираться надо.

Haz: SergKis пишет: Это понятно, откуда ноги растут. Закоменти UPstable() ВРОДЕ ОН ЛИШНИЙ

SergKis: Игорь Пробнул, без него (+) 11 строка становится 5 дальше пол экрана тсб пусто Все убежал. нет времени

Haz: STATIC FUNCTION RecnoRefresh(oBrw) Полная шляпа , при удалении записи в одной из запущеных копий - начинаются чудеса в других на вскидку предлагаю так [pre2] STATIC FUNCTION RecnoRefresh(oBrw) LOCAL nRecno, nRowPos LOCAL lEdit := .F. LOCAL nSkip := 0 AEVAL( oBrw:aColumns, { |o| if( !Empty(o:oEdit), lEdit := .T., NIL ) }) If !lEdit .and. oBrw:nLen <> Eval(oBrw:bLogicLen) nRowPos := oBrw:nRowPos nRecno := (oBrw:cAlias)->(RecNo()) oBrw:SetFocus() oBrw:Reset() (oBrw:cAlias)->(dbGoTo(nRecNo)) nSkip := 1-nRowPos oBrw:Skip(nSkip) oBrw:Refresh(.t., .t.) oBrw:nRowPos := nRowPos DO EVENTS EndIf RETURN Nil [/pre2] и таймер установить на секунду DEFINE TIMER Timer_1 INTERVAL 1000 ACTION RecnoRefresh(oBr)

Andrey: Haz пишет: и таймер установить на секунду Это круто на секунду. Каждую секунду проверят ? Хотябы 15 секунд и то хоть легче компу и сети.

SergKis: SergKis пишет Сохранять, ставить CLR_PANE для них, потом восстанавливать ... Сделал вариант с цветами, вроде не мелькает [pre2] METHOD AppendRow( lUnlock ) CLASS TSBrowse LOCAL cAlias, bAddRec, xRet, lAdd := .F., lUps := .F. LOCAL oClr1 := oKeyData() LOCAL oClr2 := oKeyData() LOCAL lNoGray := ::lNoGrayBar If ::lIsDbf cAlias := ::cAlias EndIf If HB_ISBLOCK( ::bAddBefore ) xRet := Eval( ::bAddBefore, Self ) If HB_ISLOGICAL(xRet) .and. ! xRet lUps := .T. EndIf EndIf Do case case lUps case ::lIsDbf bAddRec := If( !Empty( ::bAddRec ), ::bAddRec, {|| ( cAlias )->( dbAppend() ), ! NetErr() } ) If Eval( bAddRec, Self ) lUps := lAdd := .T. EndIf case ::lIsArr bAddRec := If( !Empty( ::bAddRec ), ::bAddRec, {|| aAdd(::aArray, AClone( ::aDefValue ) ), .T. } ) If Eval( bAddRec, Self ) lUps := lAdd := .T. EndIf end If HB_ISBLOCK( ::bAddAfter ) Eval( ::bAddAfter, Self, lAdd ) EndIf If lAdd .and. ::lIsDbf .and. ! empty(lUnlock) ( cAlias )->( dbUnlock() ) EndIf If lUps If ::lIsDbf SysRefresh() AEval(::aColumns, {|oc,nc| oClr1:Set(nc, { oc:nClrFocuBack, oc:nClrFocuFore }), ; oClr2:Set(nc, { oc:nClrSeleBack, oc:nClrSeleFore }), ; oc:nClrFocuBack := oc:nClrFore, ; oc:nClrFocuFore := oc:nClrBack, ; oc:nClrSeleBack := oc:nClrFore, ; oc:nClrSeleFore := oc:nClrBack }) ::lNoGrayBar := .T. ::nLen := ( cAlias )->( Eval( ::bLogicLen ) ) ::Upstable() AEval(::aColumns, {|oc,nc,ac1,ac2| ac1 := oClr1:Get(nc), ac2 := oClr2:Get(nc), ; oc:nClrFocuBack := ac1[1], ; oc:nClrFocuFore := ac1[2], ; oc:nClrSeleBack := ac2[1], ; oc:nClrSeleFore := ac2[2] }) ::lNoGrayBar := lNoGray ::Refresh(.T., .T.) ElseIf ::lIsArr SysRefresh() ::nLen := Len( ::aArray ) ::nAt := ::nLen ::nRowPos := ::nRowCount() ::Refresh(.T., .T.) EndIf EndIf ::SetFocus() RETURN lAdd [/pre2] Пример на этом варианте https://my-files.ru/u2zy55 Haz пишет STATIC FUNCTION RecnoRefresh(oBrw) Полная шляпа Андрей хотел его временно, на время отладки, потом убрать. В примере заменил, на вскидку по быстрому.

Haz: Andrey пишет: Это круто на секунду. Каждую секунду проверят ? Исходник глянь. Как там сделано

SergKis: SergKis пишет Сделал вариант с цветами, вроде не мелькает Попробовал в :AppendRow() оставить только строки для :lNoGray - оказалось этого достаточно убрать мелькание. Так что строки сохранения\восстановления цветов убрал

SergKis: gfilatov2002 пишет и склоняюсь ко второму варианту Ваше мнение Думаю это конец hmg, за плату лучше FW. У нас: - печать своя - работа с excel своя - почта своя - pdf свое - letodb - hmg 2.07 от 2012 unicode все на vc8 Тек. версию исп. для информации и предложений (проба, отладка) из своей версии иногда из тек. в свою. В основном это тсб, т.к. у себя еще 90% работа на переделанном browse. Новое делается с исп. тсб, т.к. уверенность в тсб стабильной работе появилась не так давно. Использование "платного Embarcadero C++ 7.3 (32-bit)" не интересно. MinGw то же под вопросом.

Haz: SergKis пишет: Использование "платного Embarcadero C++ 7.3 (32-bit)" не интересно. MinGw то же под вопросом. Тоже склоняюсь к тому ,что переход на платный компилятор не убъет но убавит интерес к hmg, тем более что кардинальных преимуществ с переходом с 5 на 7 нет. Среди коммерческих продуктов тогда уж точно выбор перетянет FW или менее известный Xailer

gfilatov2002: Haz пишет: переход на платный компилятор не убъет но убавит интерес к hmg Благодарю за Ваши комментарии. SergKis пишет: Использование "платного Embarcadero C++ 7.3 (32-bit)" не интересно. Я забыл уточнить, что речь идет об усеченной версии для командной строки, которая сейчас активно используется пользователями FW. Она доступна для всех по адресу: http://xharbour.org/index.asp?page=download/windows/required_win SergKis пишет: MinGw то же под вопросом. Если возможно, просветите, какие вопросы есть к MinGW, ведь он достаточно стабилен и постоянно развивается SergKis пишет: все на vc8 У меня готово решение для бесплатного Microsoft Visual C++ 2017 Community Edition, но никак не удается подружить его с библиотекой BosTaurus. Возможно, Вы сможете помочь в этом? Тогда можно будет рассмотреть вариант перехода на VC Благодарю за Ваше внимание и последние доработки метода AppendRow()

SergKis: gfilatov2002 пишет просветите, какие вопросы есть к MinGW Да только один, не сталкивался с ним по жизни, т.е. продукт с 0. Т.е. если надо на него идти, то должна быть веская причина, к примеру, hmg unicod. речь идет об усеченной версии для командной строки, которая сейчас активно используется пользователями FW Делает это ее и продукты из нее free в использовании. А то что работают пользователи FW ..., но у нас не FW. Если бы FW был unicode ... но никак не удается подружить его с библиотекой BosTaurus Помочь не смогу, т.к. не использую и смотрел чисто поверхностно для понимания "для чего", если что. Hmg подходит из за небольшого числа gui контролов для работы в unicod. Переход на тек. версии затруднителен, т.к. больше контролов и нет mdi и нет времени и сил на новый "поход" в unicod. А того, что есть в hmg 2.07 (gui контролов) вполне достаточно для работы с табличной базой. "От добра добра не ищут"



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