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




Пост 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 
ПрофильЦитата Ответить
Ответов - 167 , стр: 1 2 3 4 5 6 7 8 9 All [только новые]





Пост 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)


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1529
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.07.19 15:03. Заголовок: SergKis пишет: HMG_..


SergKis пишет:

 цитата:
HMG_RGB2n( YELLOW )


Кстати, еще есть такая псевдо-функция
ArrayRGB_TO_COLORREF(aRGB)

SergKis пишет:

 цитата:
HMG_RGB2n(40, 122, 237)


Проще
RGB(40, 122, 237)


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2680
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.07.19 15:09. Заголовок: gfilatov2002 пишет R..


gfilatov2002 пишет
 цитата:
RGB(40, 122, 237)


Использование псевдо функции в блоке кода приведет к сообщению
Error: Unresolved external '_HB_FUN_RGB' referenced ...


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2681
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.07.19 15:14. Заголовок: gfilatov2002 пишет П..


gfilatov2002 пишет
 цитата:
Проще
RGB(40, 122, 237)


Мои названия RGB2n(...) и n2RGB(...) добавил HMG_... для общей схемы.
Может и не надо добавлять.

Спасибо: 0 
ПрофильЦитата Ответить
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)
Пример отработал нормально с этими кодо-блоками

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2682
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.07.19 15:29. Заголовок: gfilatov2002 пишет П..


gfilatov2002 пишет
 цитата:
Пример отработал нормально с этими кодо-блоками


Да. Отработал
Мой косяк, переносил текст и перенес RGB( { 40, 122, 237 } ), RGB( YELLOW ) с лишними скобками {}
Но ArrayRGB_TO_COLORREF( YELLOW ) не вспомнишь как пишется.
Останусь на своих RGB2n(...), n2RGB(...)
Спасибо.

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




Пост 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()
Лишь бы были и не таскать из проекта в проект.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2683
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.07.19 19:39. Заголовок: gfilatov2002 пишет а..


gfilatov2002 пишет
 цитата:
аргументируйте...


Небольшой аргумент в пользу функций (не псевдо) - это хранение цветов в файлах ini, xml или использование hb_macroBlock(...) для создания блоков кода.

Спасибо: 0 
ПрофильЦитата Ответить
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)


отработал без проблем

Спасибо: 0 
ПрофильЦитата Ответить



Пост 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
...


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1532
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.07.19 10:06. Заголовок: SergKis пишет: изме..


SergKis пишет:

 цитата:
изменить в HMG_Alert() строки


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

Спасибо: 0 
ПрофильЦитата Ответить



Пост 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


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1533
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.07.19 15:03. Заголовок: SergKis пишет: доба..


SergKis пишет:

 цитата:
добавить метод в TsColumn


Принято с благодарностью

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




Пост N: 6360
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.07.19 15:06. Заголовок: SergKis пишет: Пред..


SergKis пишет:

 цитата:
Предлагаю добавить метод в TsColumn (при работе с dbf заполняются :nFieldTyp, :nFieldLen на колонки)



А как код будет выглядеть ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост 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) } )

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2694
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.07.19 14:57. Заголовок: gfilatov2002 Предла..


gfilatov2002
Предлагаю такой HMG_Alert(), добавил параметр cFont, для исп. вместо DlgFont. Тогда можно применять Alert...() ф-ии с DlgFont. Скрытый текст

Т.е. в примере можно сделать
 
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
...


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1539
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.07.19 16:04. Заголовок: SergKis пишет: Пред..


SergKis пишет:

 цитата:
Предлагаю такой HMG_Alert(), добавил параметр cFont


Принято

Спасибо: 0 
ПрофильЦитата Ответить



Пост 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 ... и использованный в контроле.

Спасибо: 0 
ПрофильЦитата Ответить
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



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2696
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.07.19 11:20. Заголовок: gfilatov2002 пишет В..


gfilatov2002 пишет
 цитата:
В момент удаления мы ведь не знаем название шрифта, а только указатель (handle) на него.


Зачем удалять фонт, созданный (сохранен в базе _HMG_aControlType == 'FONT') по DEFINE FONT ... ?
Его удаляем по RELEASE FONT, а в контролах, если не найден в базе фонтов, используем _HMG_DefaultFontName, или фонт установленный на окно. Или я что то упускаю ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 167 , стр: 1 2 3 4 5 6 7 8 9 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 10
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет