On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
gfilatov
модератор




Пост N: 699
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)


Начало темы находится здесь, а теперь

АНОНС * АНОНС * АНОНС * АНОНС * АНОНС

Готовится к опубликованию новая сборка №48, которая выйдет в конце недели.
Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне

Кратко, что нового:

- исправление обнаруженных ошибок и неточностей кода;
- новый класс HEADERIMAGE для Grid и Browse;
- свойство Address в Hyperlink может теперь открывать папку или файл на диске;
- добавлен NOTABSTOP класс для Browse;
- поддержка пользовательских компонентов (заимствована из оффициального релиза);
- расширения и исправления в библиотеках TsBrowse и PropGrid;
- обновлены сборки Харбор и HMGS-IDE;
- новые и обновленные старые примеры (как обычно ).




Спасибо: 5 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


SergKis
постоянный участник




Пост N: 3320
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.08.20 12:29. Заголовок: PS Сделал Compile.ba..


PS
Сделал Compile.bat
 
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

mgDBU.exe собрался

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1591
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.08.20 15:10. Заголовок: SergKis пишет: Сбор..


SergKis пишет:

 цитата:
Сборка mgDBU

Сергей, ностальгируешь? Решил про DBU вспомнить ?

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 3321
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.08.20 15:33. Заголовок: Haz пишет Решил про ..


Haz пишет
 цитата:
Решил про DBU вспомнить ?


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

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 3322
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.08.20 16:42. Заголовок: gfilatov2002 При ра..


gfilatov2002
При работе с HOTKEY не логично получается ситуация, когда задаем
 
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
...

Возможно, надо не делать VerifyControlDefined() для HOTKEY ?

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1764
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.08.20 17:33. Заголовок: SergKis пишет: Для ..


SergKis пишет:

 цитата:
Для типа HOTKEY не должна валится проверка


Сделал, конечно

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1765
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.08.20 14:47. Заголовок: Всем кому это интересно


Подготовил 2-ю бету для новой сборки 20.08.
Что нового
Скрытый текст

Огромная благодарность Сергею Киселеву за помощь в подготовке этой сборки

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 3323
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.08.20 16:10. Заголовок: gfilatov2002 пишет S..


gfilatov2002 пишет
 цитата:
Syntax:
DrawRR( [ lFocus ][, nRow ][, nCol ][, nHeight ][, nWidth ] ;
[, cWindowName ][, nCurve ] )


Наверно, лучше DrawRR() иметь в таком виде
 
*----------------------------------------------------------------------------*
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

т.к. толщина линии - важный элемент

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1766
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.08.20 19:08. Заголовок: SergKis пишет: лучш..


SergKis пишет:

 цитата:
лучше DrawRR() иметь в таком виде


Да, эта функция присутствует в таком виде в примере demo9, а для примера из папки DATA_BOUND она не требует введения этого дополнительного параметра.

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 3324
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.08.20 08:46. Заголовок: gfilatov2002 Может ..


gfilatov2002
Может надо добавить в тексты сообщений тсб
 
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() } )


gfilatov2002 пишет
 цитата:
Syntax:
DrawRR( [ lFocus ][, nRow ][, nCol ][, nHeight ][, nWidth ] ;
[, cWindowName ][, nCurve ] )


Подумал речь идет о ф-ии в hmg lib HMG_DrawRR(...)
Если только о примерах, тогда OK.

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 3325
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.08.20 08:51. Заголовок: PS Поправить забыл :..


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


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1767
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.08.20 19:08. Заголовок: SergKis пишет: надо..


SergKis пишет:

 цитата:
надо добавить


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

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 3329
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 20.08.20 13:45. Заголовок: gfilatov2002 Поправ..


gfilatov2002
Поправьте
 
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


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1768
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 20.08.20 14:04. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Поправьте


Сделал
Благодарю за помощь

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 6784
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.08.20 14:47. Заголовок: gfilatov2002 А можн..


gfilatov2002
А можно ещё поправить показ типов полей "=@T" ?
Приходиться таскать функцию всегда при использовании таких полей, иначе обрезает эти поля.
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


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 3330
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 20.08.20 16:33. Заголовок: Andrey пишет Подтве..


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

Else


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 3331
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 20.08.20 16:54. Заголовок: PS И добавить туда о..


PS
И добавить туда обработку полей +, ^
 
...
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
...

вопрос только в том хватит 10 знаков (особенно для версии) или сделать больше ?

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 6785
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.08.20 17:21. Заголовок: А для "D" ну..


А для "D" нужно 11 знаков, если формат такой 99.99.9999 и 9 знаков для 99.99.99

Если поле N или D имеет короткое название ( типа NN , DC), то значения в колонках обрезаются.
Нужно бы условие поставить.

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 3332
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 20.08.20 19:06. Заголовок: Andrey пишет Если по..


Andrey пишет
 цитата:
Если поле N или D имеет короткое название ( типа NN , DC), то значения в колонках обрезаются.


Для типа "D" можно поправить (METHOD LoadFields())
 
...
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"
...


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1769
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 20.08.20 20:59. Заголовок: SergKis пишет: можн..


SergKis пишет:

 цитата:
можно поправить (METHOD LoadFields())


Добавил эти изменения

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 3333
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.08.20 09:36. Заголовок: gfilatov2002 Добави..


gfilatov2002
Добавить бы
 
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
...


Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 359
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет