Форум » 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: Haz пишет: Давай какой нить флажок добавим для этого ? сделать то легко , нужно оговорить логику . Где-то удобнее сохранять RowPos , где-то нужно перескочить на RowCount()

SergKis: Haz пишет: Давай какой нить флажок добавим для этого ? Трудно сказать. От ввода\корректировки на самом тсб практически отказался (полей много и осталось в некоторых справочниках и по мелочи) в основном с диалог. окна, тсб в качестве индикатора перерисовывает (с окна вводим много строк сразу не выходя, да прямой GetBox побогаче с рюшечками). Даже для удаления исп. тоже окно но с readonly GetBox-ами, показывая значения их. сделать то легко , нужно оговорить логику По идее, по умолчанию, работать как раньше со сменой позиции, где нельзя удержать nRowPos, но полное заполнение тсб. При жестком удержании :nRowPos - иметь флаг. Или просто иметь два метода :GotoRow и :GoRow, если трудности с выше сказанным

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


Haz: Haz пишет: Полное заполнение последней страницы сделаю сегодня чуть позже. уже if (cAlias)->(Eof()) lReCount := .T. nRowPos := ::nRowCount() end

SergKis: Haz пишет Иногда записи в силу индекса или сортировки добавляются сверху тогда нужно перескакивать на первую строку. Tsb_sek__2 имеет индекс и поведение нового метода по жесткому удержанию nRowPos вполне хорошее, кроме последнего экрана, на позицию выше он может перескакивать только на 1ом экране и не возможности удержать nRowPos

Haz: в итоге 2 варианта по последней странице первый [pre2] if (cAlias)->(Eof()) lReCount := .T. nRowPos := ::nRowCount() end [/pre2] второй [pre2] if (cAlias)->(Eof()) lReCount := .T. nRowPos := ::nRowCount() -nSkip + 1 end [/pre2]

SergKis: Haz пишет уже не то. nRowPos становится просто последней, а должно было бытьВ данной ситуации 14 стр. должна стать 25 и :nRowPos -> 12, т.е перепрыг курсора неизбежен т.е. последняя строка -> :nRowCount(), :nRowPos та что нашлась\ввелась выше последней

SergKis: Haz пишет второй if (cAlias)->(Eof()) lReCount := .T. nRowPos := ::nRowCount() - nSkip + 1 end Этот вариант работает, жестко держит запись и последний лист. Немного не привычно по первому листу или вставке выше - подтягивает инф. к курсору (но так и хотелось). Гонял пример tsb_seek__2 с разными вариантами вставки F2 (oBrw:cAlias)->( FieldPut( 1, ProcName()+": "+strzero(nRec, 7) ) ) (oBrw:cAlias)->( FieldPut( 1, 'AL_'+ProcName()+": "+strzero(nRec, 7) ) ) (oBrw:cAlias)->( FieldPut( 1, 'W_'+ProcName()+": "+strzero(nRec, 7) ) ) (oBrw:cAlias)->( FieldPut( 1, 'Y_'+ProcName()+": "+strzero(nRec, 7) ) ) ... все ok На всякий случай, что вышло по методу [pre2] METHOD GotoRec( nRec, nRowPos ) CLASS TSBrowse LOCAL cAlias LOCAL nSkip := 0 LOCAL lMore := .T. LOCAL lSkip := .F. LOCAL lRet := .F. LOCAL lReCount := .F. If ::lIsDbf lRet := .T. cAlias := ::cAlias ::SetFocus() ::nLastPos := (cAlias)->( RecNo() ) hb_default( @nRowPos, ::nRowPos ) (cAlias)->( dbGoto(nRec) ) DO WHILE (cAlias)->( !EOF() ) .and. nSkip < ( ::nRowCount() - nRowPos ) (cAlias)->( dbSkip(1) ) nSkip ++ ENDDO If (cAlias)->( EOF() ) lReCount := .T. nRowPos := ::nRowCount() - nSkip + 1 EndIf (cAlias)->( dbGoto(nRec) ) nSkip := 0 ::nRowPos := 1 DO WHILE lMore (cAlias)->( dbSkip(-1) ) nSkip ++ lMore := !(cAlias)->(BOF()) .and. nSkip < (nRowPos) lSkip := !(cAlias)->(BOF()) ENDDO ::Refresh(lReCount, lReCount) If lSkip ::Skip(nSkip) EndIf ::nRowPos := nSkip ::nAt := ::nLogicPos() ::ResetVScroll() If ::bChange != Nil Eval( ::bChange, Self, 0 ) EndIf ::lHitTop := ::lHitBottom := .F. DO EVENTS EndIf RETURN lRet [/pre2]

SergKis: PS Пересобрал свой проект - все аналогично работает

gfilatov2002: SergKis пишет: Этот вариант работает Да, у меня 2-й вариант тоже отработал нормально Думаю, что в следующей сборке он заменит старый метод GotoRec()

gfilatov2002: Выпущена новая сборка 18.09 для BCC 5.51 и компиляторов Harbour и xHarbour Базовый дистрибутив-инсталлятор находится по адресу http://hmgextended.com/files/CONTRIB/hmg-18.09-setup.exe Рекомендуется к использованию Также имеются следующие сборки для Си-компиляторов: - MinGW 8.1.0 32-bit для Harbour 3.2.0dev; (есть в наличии) - MinGW 8.1.0 64-bit для Harbour 3.4.0dev; (есть в наличии) - MS VisualC 2017 32-bit для Harbour 3.2.0dev; (под заказ) - Borland/Embarcadero C++ 7.3 (32-bit) для Harbour 3.4.0dev. (под заказ)

SergKis: SergKis пишет Такое проделывал, давая отметить все или выборочно (строки тсб) в переменной (по кнопке\space,dblclick,...) Схема по памяти Порихтовал пример Tsb_Basic (demo.prg -> demo3.prg) на предмет RecnoClone с учетом установленных меток, что бы была не схема, а пример. Пример тут https://my-files.ru/u10mq0

gfilatov2002: SergKis пишет: Порихтовал пример Tsb_Basic Благодарю за помощь Уже добавил этот пример в новую бету для следующей сборки.

SergKis: gfilatov2002 пишет Уже добавил этот пример Может имеет смысл такая правка в пример (цветом выделены строки для генерации ошибки) [pre2] STATIC FUNCTION RecnoClone(oBrw, lMsg) LOCAL oRec, nRec, aRec, nCnt := 0 LOCAL aClone, lClone := .F., nClone := 0 LOCAL cAls := oBrw:cAlias LOCAL oMetka := This.Button_Clone.Cargo LOCAL cMsg := "Clone line (^) and insert record in a database ?" If Empty( aClone := oMetka:GetAll(.F.) ) aClone := {{ (cAls)->( RecNo() ), (cAls)->( RecGet() ) }} EndIf If !Empty(lMsg) cMsg := StrTran( cMsg, '^', hb_ntos(Len(aClone)) ) lClone := MsgYesNo( cMsg, "Сonfirmation", .f. ) EndIf If ! lClone oBrw:SetFocus() RETURN .F. EndIf // oBrw:bAddBefore := {|ob| oRec := (ob:cAlias)->( RecGet() ) } // все поля oBrw:bAddAfter := {|ob,ladd| iif( ladd, (ob:cAlias)->( RecPut(oRec) ), ) } // все поля FOR EACH aRec IN aClone nCnt ++ If nCnt == 2; LOOP EndIf nRec := aRec[1] oRec := aRec[2] // можно удалить поля (не нужные при clone) или заполнить new значениями // oRec:Del('F1') // oRec:Del('F4') // oRec:Set('F4', .T.) // oRec:Set('F1', Date()) If oBrw:AppendRow(.T.) nClone++ oMetka:Del(nRec) // убираем метку ? "Clone=", nRec, "==>" , (cAls)->( RecNo() ) EndIf NEXT (cAls)->(DbCommit()) oBrw:bAddBefore := Nil oBrw:bAddAfter := Nil oBrw:nCell := 3 If nClone != Len(aClone) MsgStop('Selected line (' + hb_ntos(Len(aClone)) + ').' + CRLF + ; 'Insert record in a database (' + hb_ntos(nClone) + ')', 'ERROR') EndIf oBrw:SetFocus() RETURN .T. [/pre2]

gfilatov2002: SergKis пишет: такая правка в пример Принято с благодарностью

SergKis: gfilatov2002 пишет Принято Код, выделенный цветом, наверно, не надо в пример, он показывает, что метки и :AppendRow() работают и при сбое, отработав возврат из метода

gfilatov2002: SergKis пишет: Код, выделенный цветом, наверно, не надо в пример OK

SergKis: gfilatov2002 Небольшая правка [pre2] METHOD LDblClick( nRowPix, nColPix, nKeyFlags ) CLASS TSBrowse ... ::nColSpecHd := 0 If ValType( ::bDataEval( ::aColumns[ nCol ] ) ) == "L" .and. ; ::aColumns[ nCol ]:lCheckBox .and. ! ::lNoKeyChar // virtual checkbox ::PostMsg( WM_CHAR, VK_SPACE, 0 ) ... [/pre2]

gfilatov2002: SergKis пишет: Небольшая правка Добавил Благодарю за внимание

gfilatov2002: Подготовил перед отпуском уже 5-ю бету для новой сборки библиотеки Ключевые изменения в этой сборке следующие [pre2] * Fixed: Wrong row position of a WHOLEDROPDOWN menu of a ToolButton which was placed into a HORIZONTAL SplitBox control. Bug was reported by Natali Almeida. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Fixed: Missed a TabPage's hotkeys management in the functions _AddTabPage() and _DeleteTabPage() in a TAB control. It exists in the official version too. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo.prg in folder \samples\Basic\Tab) * Fixed: Problem with a ToolButton's hotkey assigning after a changing of the ToolButton 'Caption' property at runtime. It exists in the official version too. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo1.prg in folder \samples\Basic\CONTAINERS\TOOLBAR) * Enhanced: Added the set/get 'Visible' property for the forms: - ThisWindow|<FormName>.Visible [ := | --> ] lBoolean Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\NOTIFYICON) * Modified: The new Harbour function __mvGetDef() was used instead of the combination of the __mvExist()/__mvGet() in the MiniGUI core. Note: It is required a latest Harbour version for a correct work. The compatibility with xHarbour compiler and Harbour version 3.4 is provided. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Modified: The function WaitWindow() was improved for masking of a hidden border on form's top at Windows 10. Problem was reported by Pierpaolo Martinello. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo.prg in folder \samples\Basic\WAIT_WINDOW) * Updated: Synchronized Extended HMG for compatibility with Official HMG: - New: Draw GRAPH in Bitmap is based upon the BosTaurus library. Added the new command GRAPH BITMAP for PIE|BARS|LINES|POINTS graph. An algorithm of 'Graph Bitmap' was updated for compatibility with a graphic module in the MiniGUI core. Note: It is highly recommended to use Graph Bitmap instead of Graph Command because the painting is much more efficient and does not produce a flicker. Based upon a contribution of S. Rathinagiri <srgiri/at/dataone.in>. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\BTGraph) - New: Added an alternative syntax for the following controls: - SplitBox; - Tab; - Tree. (see into the appropriate header's files) * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - added the new method FilterData( cFilter, lFocus ) in the TSBrowse class. Contributed by Sergej Kiselev (see demo in folder \samples\Advanced\Tsb_ListBox) - modified the method GotoRec( nRec [, nRowPos ] ) in the TSBrowse class. Contributed by Igor Nazarov (see demo in folder \samples\Advanced\Tsb_GotoRec) [/pre2] Для этой сборки оставил компилятор BCC 5.51 с учетом мнения заинтересованных лиц Для последующих сборок выбираю бесплатный компилятор из - Embarcadero C++ 10.1 (32-bit) - MS Visual C++ 2017 compiler (32-bit и 64-bit) но все же склоняюсь к первому варианту Что посоветуете - есть ли смысл в изменении компилятора или "старое болото" лучше



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