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

SergKis: PS Сделал Compile.bat [pre2] rem @if "%MG_ROOT%"=="" set MG_ROOT=c:\minigui call ..\..\batch\compile.bat MGDBU /nl %1 %2 %3 %4 %5 %6 %7 %8 %9 call ..\..\batch\compile.bat DBUEDIT /nl %1 %2 %3 %4 %5 %6 %7 %8 %9 call ..\..\batch\compile.bat DBUVIEW /nl %1 %2 %3 %4 %5 %6 %7 %8 %9 call ..\..\batch\compile.bat MGDBU /lo /b DBUEDIT /b DBUVIEW /r MGDBU_ %1 %2 %3 %4 %5 %6 %7 %8 %9 call ..\..\batch\compile.bat MGDBU /do %1 %2 %3 %4 %5 %6 %7 %8 %9 call ..\..\batch\compile.bat DBUEDIT /do %1 %2 %3 %4 %5 %6 %7 %8 %9 call ..\..\batch\compile.bat DBUVIEW /do %1 %2 %3 %4 %5 %6 %7 %8 %9 [/pre2] mgDBU.exe собрался

Haz: SergKis пишет: Сборка mgDBU Сергей, ностальгируешь? Решил про DBU вспомнить ?

SergKis: Haz пишет Решил про DBU вспомнить ? На vwt и hb 2.0 своя утилита уже устарела (тексты еще с clipper брались без больших изменений), вроде надо новую собрать, руки никак не дойдут, но иногда поглядываю в эту сторону. Мне нужна unicode версия (hmg такая есть) для LV866. Изменения с тек. версией hmg и своей согласовал, проверил. Думаю, почему бы не глянуть mgDbu ?


SergKis: gfilatov2002 При работе с HOTKEY не логично получается ситуация, когда задаем[pre2] ON KEY F2 OF This.Name ACTION MsgBox("Press F2 Info MdiChild ! "+ThisWindow.Name+" <"+This.Name+">", Procname()) и при нажатии получаем Called from MSGMINIGUIERROR(100) in module: h_error.prg Called from VERIFYCONTROLDEFINED(5997) in module: h_controlmisc.prg Called from GETPROPERTY(4815) in module: h_controlmisc.prg Called from (b)MDICHILDOPEN(296) in module: demo.prg Called from _DOCONTROLEVENTPROCEDURE(1901) in module: h_windows.prg Called from EVENTS(695) in module: h_events.prg Called from MDIEVENTS(291) in module: h_windowsmdi.prg Called from DOMESSAGELOOP(0) Called from _ACTIVATEWINDOW(1514) in module: h_windows.prg Called from DOMETHOD(5451) in module: h_controlmisc.prg Called from MAIN(182) in module: demo.prg т.е. в h_events.prg контрол нашелся, что соответствует запуску блока для контрола IF _HMG_BeginWindowMDIActive IF _HMG_aControlParentHandles [ i ] == GetActiveMdiHandle() .OR. _HMG_InplaceParentHandle <> 0 IF _DoControlEventProcedure ( _HMG_aControlProcedures [ i ] , i ) RETURN 0 ENDIF ... и валится в GETPROPERTY(4815) на проверке *-----------------------------------------------------------------------------* STATIC PROCEDURE VerifyControlDefined ( cParentName , cControlName ) *-----------------------------------------------------------------------------* IF _IsControlDefined ( cControlName , cParentName ) == .F. MsgMiniGuiError ( "Control: " + cControlName + " Of " + cParentName + " Not defined." ) ENDIF RETURN ... Для типа HOTKEY не должна валится проверка, т.к. контрол есть но с пустым именем _HMG_aControlType [k] := "HOTKEY" _HMG_aControlNames [k] := '' _HMG_aControlHandles [k] := 0 ... [/pre2] Возможно, надо не делать VerifyControlDefined() для HOTKEY ?

gfilatov2002: SergKis пишет: Для типа HOTKEY не должна валится проверка Сделал, конечно

gfilatov2002: Подготовил 2-ю бету для новой сборки 20.08. Что нового [pre2] * Fixed: Program crash at editing of a first column with the defined IMAGE clause in the Grid control. Bug was reported by Pete D. <pete_westg/at/yahoo.gr>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\Grid_ImageIndex) * Fixed: Small correction in the internal function VerifyControlDefined() for protection of the HOTKEY controls which have not an internal name. Problem was reported by Sergej Kiselev. Contributed by Grigory Filatov <gfilatov@inbox.ru>. * Enhanced: Added the auxiliary function HMG_Alert_RowStart() for managing of a start row of a first line in the function HMG_Alert(). Suggested and contributed by Sergej Kiselev (see demo8.prg in folder \samples\Advanced\Tsb_Basic_3) * Enhanced: The internal OOP class TKeyData was improved for Json support: - added the new method Json( cJson ). Usage: a := hb_hash() // create a hash a['dat'] := date() ; a['0'] := 222 ; a['TYP'] := "text" a['1'] := "text2" ; a['kod'] := 7777 o := oKeyData() // create object o:Set( a ) hb_MemoWrit( ".\_o_.json", o:Json( .F. ) ) ... J := hb_MemoRead( ".\_o_.json" ) a := oKeyData() ? "a = ", a:Json( J ) // a = 'O' ?v a:GetAll( .F. ) Suggested and contributed by Sergej Kiselev. * Modified: The default <versioninfo> section may be removed from the application resources with a specify of __VERSION_INFO constant and launch the batch file \Resources\CompileRes.bat. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see minigui.rc in folder \Resources) * Modified: The batch file buildapp.bat from Mingw-based distribution supports the projects with many RC files similar to BCC compiler. You can define the __VERSION_INFO constant in your local RC file for using an user-defined <versioninfo> section. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see Modest.rc in folder \Samples\Modest) * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - added the new variable :bTSDrawCell and method TSDrawCell(); - improved usage of LOADFIELDS clause for a database. Sample code: DEFINE TBROWSE &cBrw OBJ oBrw AT y,x WIDTH w HEIGHT h CELL ; ALIAS Alias() ; FONT {"Normal", "Bold", "Bold"} ; FOOTER .T. ; FIXED COLSEMPTY ; LOADFIELDS GOTFOCUSSELECT ; COLNUMBER { 1, 50 } ; ENUMERATOR Contributed by Sergej Kiselev (see demo9.prg in folder \samples\Advanced\Tsb_Basic_3) * Updated: HbSQLite3 library: - update for using SQLITE3 latest version 3.33.0dev. Contributed by Grigory Filatov <gfilatov@inbox.ru>. * New: 'RichText Class Test' sample. Related Commands are: - DEFINE RTF / CLOSE RTF - DEFINE PAGESETUP - BEGIN HEADER / END HEADER - BEGIN FOOTER / END FOOTER - WRITE TEXT - NEW PARAGRAPH - DEFINE TABLE / CLOSE TABLE - BEGIN ROW / END ROW - WRITE CELL - NEW SECTION - INSERT PAGENUMBER Based upon a contribution of Tom Marchione for FiveWin library. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\RichText) * New: 'TBrowse control placed into Alert messagebox' sample. Contributed by Sergej Kiselev (see demo9.prg in folder \samples\Advanced\Tsb_Basic_3) * New: 'Source Code Formatter' utility. Based upon a code borrowed from OOHG. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see in folder \Utils\ofmt) * Updated: 'Data-Bound Controls' sample: - updated function DrawRR() for the round rectangled edit controls. Syntax: DrawRR( [ lFocus ][, nRow ][, nCol ][, nHeight ][, nWidth ] ; [, cWindowName ][, nCurve ] ) Suggested and contributed by Sergej Kiselev (see demo2.prg in folder \samples\Basic\DATA_BOUND) [/pre2] Огромная благодарность Сергею Киселеву за помощь в подготовке этой сборки

SergKis: gfilatov2002 пишет Syntax: DrawRR( [ lFocus ][, nRow ][, nCol ][, nHeight ][, nWidth ] ; [, cWindowName ][, nCurve ] ) Наверно, лучше DrawRR() иметь в таком виде [pre2] *----------------------------------------------------------------------------* FUNCTION DrawRR( focus, nPen, t, l, b, r, cWindowName, nCurve ) *----------------------------------------------------------------------------* LOCAL aColor DEFAULT t := This.Row, l := This.Col, b := This.Height, r := This.Width DEFAULT focus := .F., cWindowName := ThisWindow.Name, nCurve := 5 DEFAULT nPen := 3 IF ISARRAY( focus ) ; aColor := focus ELSE ; aColor := iif( focus, { 0, 120, 215 }, { 100, 100, 100 } ) ENDIF DRAW ROUNDRECTANGLE IN WINDOW (cWindowName) ; AT t - 2, l - 2 TO t + b + 2, l + r + 2 ; ROUNDWIDTH nCurve ROUNDHEIGHT nCurve ; PENCOLOR aColor PENWIDTH nPen RETURN NIL [/pre2] т.к. толщина линии - важный элемент

gfilatov2002: SergKis пишет: лучше DrawRR() иметь в таком виде Да, эта функция присутствует в таком виде в примере demo9, а для примера из папки DATA_BOUND она не требует введения этого дополнительного параметра.

SergKis: gfilatov2002 Может надо добавить в тексты сообщений тсб[pre2] Function LoadMsg() ... aMsg := { "Yes", ; // ::aMsg[ 1 ] ... "Restore Record ?", ; // ::aMsg[ 46 ] (future possible usage) ... и т.д. тогда заменить в METHOD DeleteRow( lAll, lUpStable ) CLASS TSBrowse Local lRecall, nAt, nRowPos, nRecNo, lRefresh, cAlias, lEval, uTemp, cMsg ... If ! ::lIsTxt If ::lConfirm .and. !lAll cMsg := ::aMsg[ 38 ] If ::lIsDbf cMsg := ::aMsg[ 37 ] If lRecall .and. ( cAlias )->( Deleted() ) cMsg := ::aMsg[46] EndIf EndIf If ! MsgYesNo( cMsg, ::aMsg[ 39 ] ) Return .f. EndIf EndIf вместо этого //If ::lConfirm .and. !lAll .and.; // ! MsgYesNo( iif( ::lIsDbf, ::aMsg[ 37 ], ::aMsg[ 38 ] ), ::aMsg[ 39 ] ) // Return .f. //EndIf ... чтобы не делать все время блок кода :SetDeleteMode( .T., .F., {|rec,obr,txt,del| del := (obr:cAlias)->( Deleted() ) txt := iif( del, "Restore", "Delete" )+" "+"record ?" Return MsgYesNo(txt, "Confirmation") }, {|obr| obr:Cargo:nRecnoDraw := 0, obr:DrawSelect() } ) и писать проще :SetDeleteMode( .T., .F., , {|obr| obr:Cargo:nRecnoDraw := 0, obr:DrawSelect() } ) [/pre2] gfilatov2002 пишетSyntax: DrawRR( [ lFocus ][, nRow ][, nCol ][, nHeight ][, nWidth ] ; [, cWindowName ][, nCurve ] ) Подумал речь идет о ф-ии в hmg lib HMG_DrawRR(...) Если только о примерах, тогда OK.

SergKis: PS Поправить забыл[pre2] :SetDeleteMode( .T., .T., , {|obr| obr:Cargo:nRecnoDraw := 0, obr:DrawSelect() } )[/pre2]

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

SergKis: gfilatov2002 Поправьте [pre2] METHOD GetDeltaLen( nCol, nStartCol, nMaxWidth, aColSizes ) CLASS TSBrowse Local nDeltaLen := 0 If ::lAdjColumn .and. nCol < Len( ::aColumns ) IF aColSizes[ nCol ] == NIL ; aColSizes[ nCol ] := 0 ENDIF IF aColSizes[ nCol+1 ] == NIL ; aColSizes[ nCol+1 ] := 0 ENDIF If ( nStartCol + aColSizes[ nCol ] + aColSizes[ nCol + 1 ] ) > nMaxWidth nDeltaLen := nMaxWidth - ( nStartCol + aColSizes[ nCol ] ) EndIf EndIf RETURN nDeltaLen [/pre2]

gfilatov2002: SergKis пишет: Поправьте Сделал Благодарю за помощь

Andrey: gfilatov2002 А можно ещё поправить показ типов полей "=@T" ? Приходиться таскать функцию всегда при использовании таких полей, иначе обрезает эти поля. [pre2]STATIC FUNCTION myPartWidthTsb( oBrw ) // поправить ширину колонок LOCAL oCol, hFont := oBrw:hFont // 1-cells font WITH OBJECT oBrw FOR EACH oCol IN :aColumns IF oCol:cFieldTyp $ "=@T" oCol:nWidth := GetTextWidth( Nil, REPL("9",24), hFont ) // 24 знака ENDIF NEXT END WITH RETURN Nil[/pre2]

SergKis: Andrey пишет Подтверждаю, что так лучше, особенно, если исп. :nCellMarginLR := 1[pre2] METHOD LoadFields( lEditable, aColSel, cAlsSel, aNameSel, aHeadSel ) CLASS TSBrowse ... ElseIf cType $ "=@T" nSize := GetTextWidth( 0, Replicate( "9", 24 ), hFont ) Else [/pre2]

SergKis: PS И добавить туда обработку полей +, ^ [pre2] ... If cType == "C" cPicture := "@K " + Replicate( 'X', aStru[ nE, 3 ] ) ElseIf cType == "N" cPicture := Replicate( '9', aStru[ nE, 3 ] ) If aStru[ nE, 4 ] > 0 cPicture := SubStr( cPicture, 1, aStru[ nE, 3 ]-aStru[ nE, 4 ] - 1 ) + '.' + Replicate( '9', aStru[ nE, 4 ] ) EndIf cPicture := "@K " + cPicture ElseIf cType $ "^+" cPicture := Replicate( '9', 10 ) EndIf ... ElseIf cType $ "=@T" nSize := GetTextWidth( 0, Replicate( "9", 24 ), hFont ) ElseIf cType $ "^+" nSize := GetTextWidth( 0, Replicate( "9", 10 ), hFont ) Else ... [/pre2] вопрос только в том хватит 10 знаков (особенно для версии) или сделать больше ?

Andrey: А для "D" нужно 11 знаков, если формат такой 99.99.9999 и 9 знаков для 99.99.99 Если поле N или D имеет короткое название ( типа NN , DC), то значения в колонках обрезаются. Нужно бы условие поставить.

SergKis: Andrey пишет Если поле N или D имеет короткое название ( типа NN , DC), то значения в колонках обрезаются. Для типа "D" можно поправить (METHOD LoadFields())[pre2] ... nAlign := iif( ::aJustify != Nil .and. Len( ::aJustify ) >= nE, ::aJustify[ nE ], ; iif( ( cAlias )->( ValType( FieldGet( nE ) ) ) == "N", 2, ; iif( ( cAlias )->( ValType( FieldGet( nE ) ) ) $ "DL", 1, 0 ) ) ) ... ElseIf cType == "D" cData := cValToChar( iif( Empty( cData ), Date(), cData ) ) nSize := Int( GetTextWidth( 0, cData +"BB", hFont ) ) + iif( lEditable, 30, 0 ) ElseIf cType == "M" ... [/pre2]

gfilatov2002: SergKis пишет: можно поправить (METHOD LoadFields()) Добавил эти изменения

SergKis: gfilatov2002 Добавить бы[pre2] METHOD LoadFields( lEditable, aColSel, cAlsSel, aNameSel, aHeadSel ) CLASS TSBrowse ... ATail( ::aColumns ):nFieldDec := aStru[ nE, 4 ] // 18.07.2018 ATail( ::aColumns ):oCellHead := TSBcell():New() ATail( ::aColumns ):oCellEnum := TSBcell():New() ATail( ::aColumns ):oCellFoot := TSBcell():New() ATail( ::aColumns ):oCell := TSBcell():New() ... METHOD AddColumn( oColumn ) CLASS TSBrowse ... AAdd( ::aColumns, oColumn ) ATail( ::aColumns ):oCellHead := TSBcell():New() ATail( ::aColumns ):oCellEnum := TSBcell():New() ATail( ::aColumns ):oCellFoot := TSBcell():New() ATail( ::aColumns ):oCell := TSBcell():New() If Len( ::aColSizes ) < Len( ::aColumns ) ... METHOD InsColumn( nPos, oColumn ) CLASS TSBrowse ... If oColumn:lDefineColumn oColumn:DefColor( Self, oColumn:aColors ) oColumn:DefFont ( Self ) EndIf oColumn:oCellHead := TSBcell():New() oColumn:oCellEnum := TSBcell():New() oColumn:oCellFoot := TSBcell():New() oColumn:oCell := TSBcell():New() Default nPos := 1 ... [/pre2]



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