Автор | Сообщение |
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; - новые и обновленные старые примеры (как обычно ).
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
SergKis
|
| постоянный участник
|
Пост N: 3307
Зарегистрирован: 17.02.12
|
|
Отправлено: 02.08.20 20:03. Заголовок: gfilatov2002 Малень..
gfilatov2002 Маленькая бяка #xcommand DEFINE TBROWSE <name> OBJ <obrw> ; ... [ <.lAutoCol.> ], [ \{<aColSel>\} ], [ <{bInit}> ], ; ... Добавить в FUNCTION _DefineTBrowse( ControlName, ParentFormName, nCol, nRow, nWidth, nHeight, ; ... IF HB_ISARRAY( aColors ) .and. Len( aColors ) > 0 .AND. ValType( aColors[ 1 ] ) == 'A' aColors := aColors[ 1 ] ENDIF IF ISCHAR( uAlias ) .and. !Empty( lLoad ) .and. Empty( aColSel ) aHeaders := {} aNames := {} aColSel := {} (uAlias)->( AEval( array(fCount()), {|cn,nn| cn := FieldName(nn), ; AAdd(aHeaders, cn), AAdd(aNames, cn), AAdd(aColSel, cn) } ) ) IF cell .and. Empty(aColors) aColors := {} AAdd(aColors, { 6, {|c,n,b| c := n, iif( b:nCell == n, -CLR_BLUE, -RGB(128,225,225) ) } } ) AAdd(aColors, {12, {|c,n,b| c := n, iif( b:nCell == n, -CLR_BLUE, -RGB(128,225,225) ) } } ) ENDIF ENDIF ... тогда проходит такой упрощенный вариант 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 ... Пример тут https://TransFiles.ru/eyn5b
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1755
Зарегистрирован: 11.02.10
|
|
Отправлено: 02.08.20 20:20. Заголовок: SergKis пишет: Мале..
SergKis пишет: Бяку поправил - благодарю за помощь А это не перебор - явно указывать цвета внутри исходника h_tbrowse.prg
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3308
Зарегистрирован: 17.02.12
|
|
Отправлено: 02.08.20 20:45. Заголовок: gfilatov2002 пишет А..
gfilatov2002 пишет цитата: | А это не перебор - явно указывать цвета внутри исходника h_tbrowse.prg |
| Можно не указывать, возможно, это перебор. Есть в DEFINE ... назначение. и там можно указать. У себя спрячу умолчания во внутрь, что бы меньше писать. Согласен, что это лишнее
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3309
Зарегистрирован: 17.02.12
|
|
Отправлено: 02.08.20 20:54. Заголовок: PS Можно так Loca..
PS Можно так Local aClr := {} ... AAdd(aClr, { 6, {|c,n,b| c := n, iif( b:nCell == n, -CLR_BLUE, -RGB(128,225,225) ) } } ) AAdd(aClr, {12, {|c,n,b| c := n, iif( b:nCell == n, -CLR_BLUE, -RGB(128,225,225) ) } } ) DEFINE TBROWSE &cBrw OBJ oBrw AT y,x WIDTH w HEIGHT h CELL ; ALIAS ALIAS() ; FONT {"Normal", "Bold", "Bold"} ; COLORS aClr ; FOOTER .T. ; FIXED COLSEMPTY ; LOADFIELDS GOTFOCUSSELECT ; COLNUMBER { 1, 50 } ; ENUMERATOR ... будет тоже самое
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1756
Зарегистрирован: 11.02.10
|
|
Отправлено: 02.08.20 21:10. Заголовок: SergKis пишет: Согл..
SergKis пишет: OK SergKis пишет: цитата: | Можно так ... будет тоже самое |
| Спасибо
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3311
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.08.20 10:15. Заголовок: gfilatov2002 Неболь..
gfilatov2002 Небольшая правка FUNCTION _wPost( nEvent, nIndex, xParam ) ... IF nIndex:ClassName == 'TSBROWSE' oWnd := _WindowObj( nIndex:cParentWnd ) IF ! HB_ISOBJECT( oWnd ) ; RETURN NIL ENDIF nIndex := oWnd:GetObj( nIndex:cControlName ):Index ... FUNCTION _wSend( nEvent, nIndex, xParam ) ... IF nIndex:ClassName == 'TSBROWSE' oWnd := _WindowObj( nIndex:cParentWnd ) IF ! HB_ISOBJECT( oWnd ) ; RETURN NIL ENDIF nIndex := oWnd:GetObj( nIndex:cControlName ):Index ...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1757
Зарегистрирован: 11.02.10
|
|
Отправлено: 04.08.20 10:50. Заголовок: SergKis пишет: Небо..
SergKis пишет: Принято: благодарю за помощь
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3312
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.08.20 13:11. Заголовок: gfilatov2002 Пример..
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1758
Зарегистрирован: 11.02.10
|
|
Отправлено: 04.08.20 14:10. Заголовок: SergKis пишет: Прим..
SergKis пишет: Благодарю за значительно расширенный пример
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3313
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.08.20 14:33. Заголовок: gfilatov2002 пишет Б..
gfilatov2002 пишет цитата: | Благодарю за значительно расширенный пример |
| Расширение на любителя , не исп. ранее в тсб on gotfocus, on lostfocus и получил ошибку _wSend(), _wPost(), по инерции добавил карточку, опять же, на AlertOkCancel(). Я не специально, так получилось
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3314
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.08.20 16:00. Заголовок: gfilatov2002 Для пр..
gfilatov2002 Для пробы (с Игорем обсуждали такую схему) - добавил блок кода DATA bTSDrawCell // In ::TSDrawCell(...) execute - вынес вызов TSDrawCell() в метод :TSDrawCell(), заменив локальные переменные на переменные объекта TSBcel и поправил вызовы ф-ии на метод (кроме SuperHeader). Это позволило в карточке примера получить логическую переменную в виде image и по Enter менять значение, т.е. можно налету подменять данные для ф-ии TSDrawCell() Мне показалось это интересным. Пример и h_tbrowse.prg тут https://TransFiles.ru/me4mq
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1759
Зарегистрирован: 11.02.10
|
|
Отправлено: 05.08.20 16:59. Заголовок: SergKis пишет: - вы..
SergKis пишет: цитата: | - вынес вызов TSDrawCell() в метод :TSDrawCell(), заменив локальные переменные на переменные объекта TSBcel и поправил вызовы ф-ии на метод (кроме SuperHeader). Это позволило в карточке примера получить логическую переменную в виде image и по Enter менять значение, т.е. можно налету подменять данные для ф-ии TSDrawCell() Мне показалось это интересным. |
| Это интересно уже тем, что повторяющийся код вынесен в один метод. Проверил - пример отработал нормально. Благодарю за помощь
|
|
|
Haz
|
| |
Пост N: 1590
Зарегистрирован: 20.02.11
|
|
Отправлено: 05.08.20 17:13. Заголовок: SergKis пишет: Мне ..
SergKis пишет: цитата: | Мне показалось это интересным. |
| Интересным и перспективным. Спасибо, отличная идея
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3315
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.08.20 18:43. Заголовок: gfilatov2002 Кусоче..
gfilatov2002 Кусочек текста для SuperHeader Скрытый текст
METHOD DrawSuper( lDrawCell ) CLASS TSBrowse ... Else l3DText := nClr3dL := nClr3dS := Nil EndIf /* IF lDrawCell TSDrawCell( hWnd, ; // 1 hDC, ; // 2 0, ; // 3 nStartCol, ; // 4 nWidth, ; // 5 cHeading, ; // 6 nHAlign, ; // 7 nClrFore, ; // 8 nClrBack, ; // 9 hFont, ; // 10 hBitMap, ; // 11 nHeightHead, ; // 12 l3DLook, ; // 13 nLineStyle, ; // 14 nClrLine, ; // 15 3, ; // 16 1=Header 2=Footer 3=Super nHeightHead, ; // 17 nHeightFoot, ; // 18 nHeightSuper, ; // 19 nHeightSpecHd, ; // 20 lAdjBmp, ; // 21 lMulTi, ; // 22 Multiline text nVAlign, ; // 23 0, ; // 24 nVertLine nClrTo, ; // 25 lOpaque, ; // 26 iif( lBrush, nClrBack:hBrush, 0 ), ; // 27 l3DText, ; // 28 3D text nClr3dL, ; // 29 3D text light color nClr3dS ) // 30 3D text shadow color ELSE */ IF aSupHd == NIL aSupHd := {} ENDIF oSupHd := TSBcell():New() oSupHd:nRow := 0 oSupHd:nCol := nStartCol oSupHd:nWidth := nWidth oSupHd:nHeight := ::nHeightSuper oSupHd:nCell := nI oSupHd:uValue := cHeading oSupHd:lDrawLine := .F. // DrawLine() If nI <= Len( aSuperHead ) oSupHd:nFromCol := aSuperHead[ nI, 1 ] oSupHd:nToCol := aSuperHead[ nI, 2 ] EndIf oSupHd:hWnd := hWnd // 1 oSupHd:hDC := hDC // 2 oSupHd:xRow := 0 // 3 oSupHd:nStartCol := nStartCol // 4 oSupHd:nSize := nWidth // 5 oSupHd:uData := cHeading // 6 oSupHd:nAlign := nHAlign // 7 oSupHd:nClrFore := nClrFore // 8 oSupHd:nClrBack := nClrBack // 9 oSupHd:hFont := hFont // 10 oSupHd:hBitMap := hBitMap // 11 oSupHd:nHeightCell := nHeightHead // 12 oSupHd:l3DLook := l3DLook // 13 oColumn:l3DLook oSupHd:nLineStyle := nLineStyle // 14 oSupHd:nClrLine := nClrLine // 15 oSupHd:nDrawType := 3 // 16 0-line/1-header/2-footer/3-super oSupHd:nHeightHead := nHeightHead // 17 oSupHd:nHeightFoot := nHeightFoot // 18 oSupHd:nHeightSuper := nHeightSuper // 19 oSupHd:nHeightSpecHd := nHeightSpecHd // 20 oSupHd:lAdjBmp := lAdjBmp // 21 oSupHd:lMultiline := lMulti // 22 Multiline text oSupHd:nVAlign := nVAlign // 23 oSupHd:nVertText := 0 // 24 nVertLine oSupHd:nClrTo := nClrTo // 25 oSupHd:lOpaque := lOpaque // 26 oSupHd:hBrush := iif( lBrush, nClrBack:hBrush, 0 ) // 27 iif( lBrush, nClrBack:hBrush, 0 ) oSupHd:l3DText := l3DText // 28 3D text oSupHd:nClr3dL := nClr3dL // 29 3D text light color oSupHd:nClr3dS := nClr3dS // 30 3D text shadow color oSupHd:nCursor := 0 // 31 Rect cursor oSupHd:lInvertColor := .F. // 32 Invert color AAdd( aSupHd, oSupHd ) IF lDrawCell ::TSDrawCell( oSupHd ) ENDIF nStartCol += nWidth ...
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3316
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.08.20 19:14. Заголовок: PS В примере пропуст..
PS В примере пропустил Скрытый текст
oCol:bPostEdit := {|cv,ob,nc,oc,xv,ct,nl,nd| nc := ob:nCell oc := ob:aColumns[nc] xv := ob:aArray[ob:nAt][3] ct := ob:aArray[ob:nAt][4] nl := ob:aArray[ob:nAt][5] nd := ob:aArray[ob:nAt][6] If ct == "N" cv := alltrim(cv) If len(cv) > nl ; cv := right(cv, nl) EndIf cv := Ltrim(Str(Val(cv), nl+3, nd)) xv := val(cv) ob:aArray[ob:nAt][3] := xv ob:SetValue(oc, cv) ElseIf ct == "D" xv := CtoD(cv) cv := cValToChar(xv) ob:aArray[ob:nAt][3] := xv ob:SetValue(oc, cv) ElseIf ct == "C" ob:aArray[ob:nAt][3] := cv EndIf ob:Refresh(.F.) ; DO EVENTS ob:Cargo:oCar:nMod += 1 _wSend(3, ob) Return Nil }
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1760
Зарегистрирован: 11.02.10
|
|
Отправлено: 05.08.20 19:22. Заголовок: SergKis пишет: для ..
SergKis пишет: Спасибо, сделал SergKis пишет: добавил
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3317
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.08.20 15:06. Заголовок: gfilatov2002 Поправ..
gfilatov2002 Поправил пример, при работе с карточкой данные в колонке "Value" не меняют тип (ранее был "C") и режим Edit учитывает это в блоках кода :bPrevEdt, :bPostEdit. Тут https://TransFiles.ru/ppqsg
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1761
Зарегистрирован: 11.02.10
|
|
Отправлено: 06.08.20 15:38. Заголовок: SergKis пишет: Попр..
SergKis пишет: Спасибо, обновил пример также (с форматированием).
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3318
Зарегистрирован: 17.02.12
|
|
Отправлено: 08.08.20 11:43. Заголовок: gfilatov2002 Сборка..
gfilatov2002 Сборка mgDBU Compile.bat (с build.bat ok!) выдает DBUVIEW.prg(66) Error E0030 Syntax error "syntax error at 'BEFORE'"
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3319
Зарегистрирован: 17.02.12
|
|
Отправлено: 08.08.20 12:22. Заголовок: Разобрался. Забываю,..
Разобрался. Забываю, что в этом Compile.bat есть строка @if "%MG_ROOT%"=="" set MG_ROOT=c:\minigui которую надо править каждый раз на @if "%MG_ROOT%"=="" set MG_ROOT=c:\miniguiBcc58 в др. Compile.bat берется из minigui.cfg. там правлю всегда # Basic configuration for Compile.bat MG_CMP=harbour MG_BCC=c:\borland\bcc58 MG_ROOT=c:\miniguiBcc58
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|