Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне
Кратко, что нового:
- исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).
Отправлено: 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(...) для создания блоков кода.
Применять так к примеру 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
Предлагаю добавить метод в 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) } )
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
#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 } )
*-----------------------------------------------------------------------------* 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"
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 ... и использованный в контроле.
такая штука удаляет фонт, если он не 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, или фонт установленный на окно. Или я что то упускаю ?
Все даты в формате GMT
3 час. Хитов сегодня: 220
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет