Автор | Сообщение |
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: 2679
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.07.19 14:49. Заголовок: gfilatov2002 пишет а..
gfilatov2002 пишет LOCAL aClr := {} AAdd( aClr, { CLR_FOCUSB, { |a,b,c| iif( c:nCell == b, ; // CLR_FOCUSB { HMG_RGB2n( 66, 255, 236), HMG_RGB2n(209, 227, 248) }, ; { HMG_RGB2n(220, 220, 220), HMG_RGB2n(220, 220, 220) } ) } } ) AAdd( aClr, { CLR_HEADF , {|| HMG_RGB2n( YELLOW ) } } ) // 3 , текста шапки таблицы AAdd( aClr, { CLR_HEADB , {|| { HMG_RGB2n(40, 122, 237), ; HMG_RGB2n(48, 29, 26) } } } ) // 4 , фона шапка таблицы oBrw := Brw2Arr(cBrw, nY, nX, nW, nH, aDatos, aClr, aFont)
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1529
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.07.19 15:03. Заголовок: SergKis пишет: HMG_..
SergKis пишет: Кстати, еще есть такая псевдо-функция ArrayRGB_TO_COLORREF(aRGB) SergKis пишет: Проще RGB(40, 122, 237)
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2680
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.07.19 15:09. Заголовок: gfilatov2002 пишет R..
gfilatov2002 пишет Использование псевдо функции в блоке кода приведет к сообщению Error: Unresolved external '_HB_FUN_RGB' referenced ...
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2681
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.07.19 15:14. Заголовок: gfilatov2002 пишет П..
gfilatov2002 пишет Мои названия RGB2n(...) и n2RGB(...) добавил HMG_... для общей схемы. Может и не надо добавлять.
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1530
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.07.19 15:17. Заголовок: SergKis пишет: Испо..
SergKis пишет: цитата: | Использование псевдо функции в блоке кода приведет к сообщению |
| Нет, такая ошибка не возникла в следующем коде: AAdd( aClr, { 6, { |a,b,c| iif( c:nCell == b, ; // CLR_FOCUSB { RGB( 66, 255, 236), RGB(209, 227, 248) }, ; { RGB(220, 220, 220), RGB(220, 220, 220) } ) } } ) AAdd( aClr, { CLR_HEADF , {|| ArrayRGB_TO_COLORREF( YELLOW ) } } ) // 3 , текста шапки таблицы AAdd( aClr, { CLR_HEADB , {|| { RGB(40, 122, 237), ; RGB(48, 29, 26) } } } ) // 4 , фона шапка таблицы oBrw := Brw2Arr(cBrw, nY, nX, nW, nH, aDatos, aClr, aFont) Пример отработал нормально с этими кодо-блоками
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2682
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.07.19 15:29. Заголовок: gfilatov2002 пишет П..
gfilatov2002 пишет цитата: | Пример отработал нормально с этими кодо-блоками |
| Да. Отработал Мой косяк, переносил текст и перенес RGB( { 40, 122, 237 } ), RGB( YELLOW ) с лишними скобками {} Но ArrayRGB_TO_COLORREF( YELLOW ) не вспомнишь как пишется. Останусь на своих RGB2n(...), n2RGB(...) Спасибо.
| |
|
Andrey
|
| постоянный участник
|
Пост N: 6359
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.07.19 17:35. Заголовок: SergKis пишет: Но A..
SergKis пишет: цитата: | Но ArrayRGB_TO_COLORREF( YELLOW ) не вспомнишь как пишется. Останусь на своих RGB2n(...), n2RGB(...) |
| Да это точно такую функцию и не вспомнишь.... да и эту тоже nRGB2Arr() Я тоже замучился из проекта в проект таскать эти ToRgb()... Сергей правильно предложил HMG_RGB2n() и HMG_n2RGB() . Можно и сократить до MG_RGB2n() и MG_n2RGB() Лишь бы были и не таскать из проекта в проект.
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2683
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.07.19 19:39. Заголовок: gfilatov2002 пишет а..
gfilatov2002 пишет Небольшой аргумент в пользу функций (не псевдо) - это хранение цветов в файлах ini, xml или использование hb_macroBlock(...) для создания блоков кода.
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1531
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.07.19 20:43. Заголовок: Andrey пишет: Серге..
Andrey пишет: цитата: | Сергей правильно предложил HMG_RGB2n() и HMG_n2RGB() |
| С учетом обсуждения (и поддержки) добавил эти макросы в заголовок i_pseudofunc.ch Теперь код ниже цитата: | LOCAL aClr := {} AAdd( aClr, { CLR_FOCUSB, { |a,b,c| iif( c:nCell == b, ; // CLR_FOCUSB { HMG_RGB2n( 66, 255, 236), HMG_RGB2n(209, 227, 248) }, ; { HMG_RGB2n(220, 220, 220), HMG_RGB2n(220, 220, 220) } ) } } ) AAdd( aClr, { CLR_HEADF , {|| HMG_RGB2n( YELLOW ) } } ) // 3 , текста шапки таблицы AAdd( aClr, { CLR_HEADB , {|| { HMG_RGB2n(40, 122, 237), ; HMG_RGB2n(48, 29, 26) } } } ) // 4 , фона шапка таблицы oBrw := Brw2Arr(cBrw, nY, nX, nW, nH, aDatos, aClr, aFont) |
| отработал без проблем
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2684
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.07.19 08:21. Заголовок: gfilatov2002 Можно ..
gfilatov2002 Можно изменить в HMG_Alert() строки STATIC FUNCTION FillDlg( cMsg, aOptions, nLineas, cIcoFile, nIcoSize, aBtnColors, bBlock, lClosable ) ... This.Closable := lClosable This.&( aBut[ Max( 1, Min( nLenaOp, _HMG_ModalDialogReturn ) ) ] ).SetFocus() This.Center() IF lClosable ON KEY ESCAPE OF &cForm ACTION ( _HMG_ModalDialogReturn := 0, lPressButton := .T., ThisWindow.Release() ) ENDIF IF HB_ISBLOCK( bBlock ) Do_WindowEventProcedure( bBlock, This.Index, 'WINDOW_ACTIVATE' ) ENDIF IF _IsControlDefined( "oTimer", cForm ) This.oTimer.Enabled := .T. ENDIF ...
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1532
Зарегистрирован: 11.02.10
|
|
Отправлено: 25.07.19 10:06. Заголовок: SergKis пишет: изме..
SergKis пишет: цитата: | изменить в HMG_Alert() строки |
| Сделал, конечно
| |
|
|
SergKis
|
| постоянный участник
|
Пост N: 2685
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.07.19 13:59. Заголовок: gfilatov2002 Предла..
gfilatov2002 Предлагаю добавить метод в TsColumn (при работе с dbf заполняются :nFieldTyp, :nFieldLen на колонки) METHOD ToWidth( uLen, nKfc ) CLASS TSColumn LOCAL nWidth, nLen, cTyp, cChr := 'B' Default nKfc := 1 If ! empty( ::cPicture ) .and. HB_ISCHAR( ::cPicture ) If empty( uLen ) cChr := ::cPicture If Left(cChr, 2) == '@K' cChr := AllTrim(Substr(cChr, 3)) EndIf nLen := Len( cChr ) Else If '9' $ ::cPicture; cChr := '9' ElseIf 'X' $ ::cPicture; cChr := 'X' EndIf nLen := uLen cChr := Replicate(cChr, nLen) EndIf Else cTyp := ::cFieldTyp nLen := iif( empty(uLen), ::nFieldLen, uLen ) If cTyp $ 'CML'; cChr := 'B' ElseIf cTyp == 'ND'; cChr := '9' EndIf nLen := iif( empty(nLen), 7, nLen ) cChr := Replicate(cChr, nLen) EndIf nWidth := GetTextWidth( 0, cChr, ::hFont ) nWidth := Int( nWidth * nKfc ) RETURN nWidth Применять так к примеру with object oBrw For i := 1 To Len( :aColumns ) oc := :aColumns[ i ] cp := oc:cName xv := :GetValue(cp) cn := '_' + cp s := iif( oc:nFieldLen > 40, 40, Nil ) nl := oc:ToWidth( s ) @ y, x LABEL &cn ; VALUE oc:cHeading ; WIDTH l HEIGHT h ; VCENTERALIGN @ y, x+l+20 GETBOX &cp ; VALUE xv ; WIDTH nl HEIGHT h ; PICTURE :cPictureGet(, i) y += This.&(cn).Height + 20 Next end with
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1533
Зарегистрирован: 11.02.10
|
|
Отправлено: 25.07.19 15:03. Заголовок: SergKis пишет: доба..
SergKis пишет: цитата: | добавить метод в TsColumn |
| Принято с благодарностью
| |
|
Andrey
|
| постоянный участник
|
Пост N: 6360
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.07.19 15:06. Заголовок: SergKis пишет: Пред..
SergKis пишет: цитата: | Предлагаю добавить метод в TsColumn (при работе с dbf заполняются :nFieldTyp, :nFieldLen на колонки) |
| А как код будет выглядеть ?
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2686
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.07.19 15:57. Заголовок: Andrey пишет А как к..
Andrey пишет цитата: | А как код будет выглядеть ? |
| SergKis пишет цитата: | Применять так к примеру with object oBrw For i := 1 To Len( :aColumns ) oc := :aColumns[ i ] cp := oc:cName xv := :GetValue(cp) cn := '_' + cp s := iif( oc:nFieldLen > 40, 40, Nil ) nl := oc:ToWidth( s ) @ y, x LABEL &cn ; VALUE oc:cHeading ; WIDTH l HEIGHT h ; VCENTERALIGN @ y, x+l+20 GETBOX &cp ; VALUE xv ; WIDTH nl HEIGHT h ; PICTURE :cPictureGet(, i) y += This.&(cn).Height + 20 Next end with |
| или :LoadFields(.F.) nKfc := 0.8 // коэффициент для коррекции nWidth полученной при расчете, если надо такая поправка AEval( :aColumns, {|oc| oc:nWidth := oc:ToWidth(iif( oc:nFieldLen > 40, 40, Nil ), nKfc) } )
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2694
Зарегистрирован: 17.02.12
|
|
Отправлено: 29.07.19 14:57. Заголовок: gfilatov2002 Предла..
gfilatov2002 Предлагаю такой HMG_Alert(), добавил параметр cFont, для исп. вместо DlgFont. Тогда можно применять Alert...() ф-ии с DlgFont. Скрытый текст
*-----------------------------------------------------------------------------* FUNCTION HMG_Alert( cMsg, aOptions, cTitle, nType, cIcoFile, nIcoSize, aBtnColors, bInit, lClosable, cFont ) *-----------------------------------------------------------------------------* LOCAL nLineas LOCAL aIcon := { "ALERT", "QUESTION", "INFO", "STOP" } LOCAL lFont := .F. LOCAL lEmpty := ( Empty( aOptions ) .OR. ISNUMERIC( aOptions ) ) LOCAL cForm := "oDlg" IF _IsWindowDefined( cForm ) nLineas := 0 WHILE _IsWindowDefined( cForm := 'oDlg' + hb_ntos( ++nLineas ) ) END ENDIF lPressButton := .F. lIsWin10 := hb_osisWin10() hb_default( @aBackColor, nRGB2Arr( GetSysColor( COLOR_BTNFACE ) ) ) hb_default( @aFontColor, nRGB2Arr( GetSysColor( COLOR_BTNTEXT ) ) ) DEFAULT cTitle TO "Attention", aOptions TO { "&OK" }, lClosable TO .F. IF ValType( aOptions ) == "A" DEFAULT nType := iif( Len( aOptions ) > 1, 2, 1 ) ELSE DEFAULT nType := 1 ENDIF #ifdef _HMG_COMPAT_ CHECK TYPE cMsg AS USUAL, ; aOptions AS USUAL, ; cTitle AS CHARACTER, ; nType AS NUMERIC, ; cIcoFile AS USUAL, ; nIcoSize AS USUAL, ; aBtnColors AS USUAL, ; bInit AS USUAL, ; lClosable AS LOGICAL #endif IF nType < 1 .OR. nType > 4 nType := 1 ENDIF AEval( aIcon, {|x, i| aIcon[ i ] := "ZZZ_B_" + x } ) DEFAULT cIcoFile := aIcon[ nType ], nIcoSize := 32, cFont := "DlgFont" IF GetFontHandle( cFont ) == 0 lFont := .T. DEFINE FONT &cFont FONTNAME GetDefaultFontName() SIZE GetDefaultFontSize() - iif( lIsWin10, 1, 0 ) ENDIF cMsg := cValToChar( cMsg ) cMsg := StrTran( cMsg, ";", CRLF ) nLineas := MLCount( cMsg, 254 ) IF lEmpty lClosable := .T. _HMG_ModalDialogReturn := 0 ELSE hb_default( @_HMG_ModalDialogReturn, 0 ) ENDIF DEFINE WINDOW &cForm WIDTH 0 HEIGHT 0 TITLE cTitle MODAL NOSIZE BACKCOLOR aBackColor ; ON INTERACTIVECLOSE ( lPressButton .OR. lClosable ) ; ON RELEASE iif( ! lPressButton .AND. lClosable, _HMG_ModalDialogReturn := 0, NIL ) FillDlg( cMsg, aOptions, nLineas, cIcoFile, nIcoSize, aBtnColors, bInit, lClosable, cFont ) END WINDOW ACTIVATE WINDOW &cForm IF lFont RELEASE FONT &cFont ENDIF RETURN _HMG_ModalDialogReturn *-----------------------------------------------------------------------------* STATIC FUNCTION FillDlg( cMsg, aOptions, nLineas, cIcoFile, nIcoSize, aBtnColors, bBlock, lClosable, cFont ) *-----------------------------------------------------------------------------* LOCAL hWnd LOCAL hDC LOCAL hDlgFont LOCAL aBut := {} LOCAL cForm := ThisWindow.Name LOCAL cLblName LOCAL cBtnName LOCAL nCol LOCAL nOpc := 1 LOCAL nMaxLin := 0 LOCAL nMaxBoton := 0 LOCAL nLenBotones LOCAL nLenaOp LOCAL nWidthCli, nHeightCli LOCAL nWidthDlg, nHeightDlg LOCAL nChrHeight LOCAL nHeightBtn LOCAL nVMARGIN_BUTTON := VMARGIN_BUTTON LOCAL nSeconds LOCAL n LOCAL lExt #ifdef _HMG_COMPAT_ CHECK TYPE cMsg AS CHARACTER, ; aOptions AS USUAL, ; nLineas AS NUMERIC, ; cIcoFile AS CHARACTER, ; nIcoSize AS NUMERIC #endif IF ValType( aOptions ) == "N" nSeconds := aOptions aOptions := { "&OK" } DEFINE TIMER oTimer OF &cForm INTERVAL nSeconds * 1000 ACTION ( lPressButton := .T., ThisWindow.Release() ) This.oTimer.Enabled := .F. ENDIF nLenaOp := iif( ValType( aOptions ) == "A", Len( aOptions ), 1 ) IF ( lExt := ( ISARRAY( aBtnColors ) .AND. Len( aBtnColors ) == nLenaOp ) ) nVMARGIN_BUTTON := 3 * VMARGIN_BUTTON ENDIF hDlgFont := GetFontHandle( cFont ) // calculate the column of the text output nCol := MARGIN_ICON + iif( nIcoSize == 32, 0, MARGIN_ICON / iif( nIcoSize == 64, 2.8, 3.2 ) ) hWnd := This.Handle hDC := GetDC( hWnd ) // calculate the character height for the dialog font nChrHeight := GetTextHeight( hDC, aOptions[ 1 ], hDlgFont ) + nVMARGIN_BUTTON / 2 // calculate the maximum width of the lines FOR n := 1 TO nLineas nMaxLin := Max( nMaxLin, GetTextWidth( hDC, AllTrim( MemoLine( cMsg,, n ) ), hDlgFont ) ) NEXT // calculate the maximum width of the buttons FOR n := 1 TO nLenaOp nMaxBoton := Max( nMaxBoton, GetTextWidth( hDC, aOptions[ n ], hDlgFont ) ) NEXT ReleaseDC( hWnd, hDC ) nMaxBoton += ( HMARGIN_BUTTON * iif( ! lExt .AND. lIsWin10 .AND. nLenAop > 2, 1.1, iif( nLenAop > 1, 2, 3 ) ) ) // calculate the width of the options + their separations nLenBotones := ( nMaxBoton + SEP_BUTTON ) * nLenaOp nHeightBtn := nVMARGIN_BUTTON + nChrHeight + nVMARGIN_BUTTON // calculate the width of the client area nWidthCli := Max( MARGIN_ICON + nMaxLin + MARGIN, MARGIN + nLenBotones + MARGIN - HMARGIN_BUTTON ) + iif( nIcoSize > 48, MARGIN / 4, 0 ) nWidthDlg := nWidthCli + GetBorderWidth() nHeightCli := ( ( nLineas + iif( nLineas == 1, 4, 3 ) ) * nChrHeight ) + nVMARGIN_BUTTON + nHeightBtn + GetBorderHeight() nHeightDlg := nHeightCli + GetTitleHeight() + SEP_BUTTON + GetBorderHeight() / iif( lIsWin10, 2.5, 1 ) IF MSC_VER() > 0 .AND. _HMG_IsThemed nWidthDlg += 10 nHeightDlg += 10 ENDIF This.Width := nWidthDlg This.Height := nHeightDlg IF nLineas > 1 FOR n := 1 TO nLineas cLblName := "Say_" + StrZero( n, 2 ) @ nChrHeight * ( n + iif( nLineas == 1, .5, 0 ) ) + GetBorderHeight(), nCol ; LABEL &cLblName VALUE AllTrim( MemoLine( cMsg,, n ) ) OF &cForm ; FONT cFont WIDTH nWidthCli - nCol - GetBorderWidth() - MARGIN / 4 HEIGHT nChrHeight ; FONTCOLOR aFontColor BACKCOLOR aBackColor VCENTERALIGN NEXT n ELSE @ nChrHeight * 1.5 + GetBorderHeight(), nCol ; LABEL Say_01 VALUE AllTrim( cMsg ) OF &cForm ; FONT cFont WIDTH nWidthCli - nCol - GetBorderWidth() - MARGIN / 4 HEIGHT nChrHeight ; FONTCOLOR aFontColor BACKCOLOR aBackColor VCENTERALIGN ENDIF DRAW ICON IN WINDOW &cForm ; AT nChrHeight + GetBorderHeight(), MARGIN / iif( nIcoSize == 32, 1.4, iif( nIcoSize == 48, 1.7, 2 ) ) ; PICTURE cIcoFile WIDTH nIcoSize HEIGHT nIcoSize TRANSPARENT FOR n := 1 TO nLenaOp cBtnName := "Btn_" + StrZero( n, 2 ) AAdd( aBut, cBtnName ) IF lExt @ 0, 0 BUTTONEX &cBtnName OF &cForm CAPTION aOptions[ n ] ; FONTCOLOR aFontColor BACKCOLOR aBtnColors[ n ] NOXPSTYLE HANDCURSOR ; FONT cFont WIDTH nMaxBoton HEIGHT nVMARGIN_BUTTON + nChrHeight + nVMARGIN_BUTTON ; ACTION ( _HMG_ModalDialogReturn := This.Cargo, lPressButton := .T., ThisWindow.Release() ) ELSE @ 0, 0 BUTTON &cBtnName OF &cForm CAPTION aOptions[ n ] ; FONT cFont WIDTH nMaxBoton HEIGHT nVMARGIN_BUTTON + nChrHeight + nVMARGIN_BUTTON ; ACTION ( _HMG_ModalDialogReturn := This.Cargo, lPressButton := .T., ThisWindow.Release() ) ENDIF This.&( aBut[ nOpc ] ).Cargo := nOpc++ NEXT n nOpc := 1 FOR n := nLenaOp TO 1 STEP -1 This.&( aBut[ n ] ).Row := nHeightCli + SEP_BUTTON + GetBorderHeight() / iif( lIsWin10, 2.5, .9 ) - nChrHeight - nHeightBtn This.&( aBut[ n ] ).Col := nWidthCli + iif( lIsWin10, 0, GetBorderWidth() / 2 ) - ( nMaxBoton + SEP_BUTTON ) * nOpc++ NEXT n This.Closable := lClosable This.&( aBut[ Max( 1, Min( nLenaOp, _HMG_ModalDialogReturn ) ) ] ).SetFocus() This.Center() IF lClosable ON KEY ESCAPE OF &cForm ACTION ( _HMG_ModalDialogReturn := 0, lPressButton := .T., ThisWindow.Release() ) ENDIF IF HB_ISBLOCK( bBlock ) Do_WindowEventProcedure( bBlock, This.Index, 'WINDOW_ACTIVATE' ) ENDIF IF _IsControlDefined( "oTimer", cForm ) This.oTimer.Enabled := .T. ENDIF RETURN NIL
| Т.е. в примере можно сделать FUNCTION Main() ... SET DIALOGBOX CENTER OF PARENT SET CENTERWINDOW RELATIVE PARENT ... DEFINE FONT FontBold FONTNAME _HMG_DefaultFontName SIZE _HMG_DefaultFontSize BOLD DEFINE FONT AgeCard FONTNAME "Verdana" SIZE 12 BOLD DEFINE FONT DlgFont FONTNAME "Tahoma" SIZE 12 ... STATIC FUNC AgeCard( oWnd, oBrw, oCnl ) ... LOCAL cFont := 'AgeCard' If ! empty( oBrw:GetValue('AGE') ) .or. ! empty( oBrw:GetValue('FIRST') ) HMG_Alert( cMsg, aButt, cTitl, , cBmp, , aClr, bInit, .T., cFont ) EndIf ... STATIC FUNC Age_CardSave( oBrw, lSave ) ... If empty( lSave ) .and. ThisWindow.Cargo // lMsg := MsgYesNo('Save card - '+cValToChar(This.AGE.Value )+CRLF+ ; lMsg := AlertYesNo('Save card - '+cValToChar(This.AGE.Value )+CRLF+ ; cValToChar(This.FIRST.Value)+CRLF+ ; cValToChar(This.LAST.Value ), ; 'NR. '+hb_ntos(oBrw:nAt)+ ' RECNO ' + cValToChar(nRec)) EndIf ...
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1539
Зарегистрирован: 11.02.10
|
|
Отправлено: 29.07.19 16:04. Заголовок: SergKis пишет: Пред..
SergKis пишет: цитата: | Предлагаю такой HMG_Alert(), добавил параметр cFont |
| Принято
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2695
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.07.19 10:51. Заголовок: gfilatov2002 Можете..
gfilatov2002 Можете пояснить зачем удаляется фонт из списка, если в контролах он не создается (не увидел) ? *-----------------------------------------------------------------------------* FUNCTION _EraseControl ( i, p ) *-----------------------------------------------------------------------------* LOCAL hWnd LOCAL mVar LOCAL t, x x := _HMG_aControlFontHandle IF ISNUMERIC ( x ) .AND. !Empty ( x ) .AND. !( x == GetFontHandle ( "DlgFont" ) ) DeleteObject ( x ) ENDIF ... такая штука удаляет фонт, если он не DlgFont, созданный по DEFINE FONT ... и использованный в контроле.
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1540
Зарегистрирован: 11.02.10
|
|
Отправлено: 30.07.19 11:12. Заголовок: SergKis пишет: така..
SergKis пишет: цитата: | такая штука удаляет фонт, если он не DlgFont, созданный по DEFINE FONT ... и использованный в контроле |
| Да, все верно. В момент удаления мы ведь не знаем название шрифта, а только указатель (handle) на него. Сейчас этот фрагмент кода выглядит так цитата: | FUNCTION _EraseControl ( i , p ) ... IF ISNUMERIC ( x ) .AND. !Empty ( x ) .AND. ; !( x == GetFontHandle ( "DlgFont" ) ) .AND. !( x == GetFontHandle ( _HMG_ActiveDialogFontName ) ) DeleteObject ( x ) ENDIF |
|
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2696
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.07.19 11:20. Заголовок: gfilatov2002 пишет В..
gfilatov2002 пишет цитата: | В момент удаления мы ведь не знаем название шрифта, а только указатель (handle) на него. |
| Зачем удалять фонт, созданный (сохранен в базе _HMG_aControlType == 'FONT') по DEFINE FONT ... ? Его удаляем по RELEASE FONT, а в контролах, если не найден в базе фонтов, используем _HMG_DefaultFontName, или фонт установленный на окно. Или я что то упускаю ?
| |
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
|