On-line: Мирослав, гостей 0. Всего: 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: 4002
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.12.21 15:34. Заголовок: gfilatov2002 Метод ..


gfilatov2002
Метод тут Скрытый текст

В ф-ии так выходит
 
FUNCTION _DefineTBrowse( ControlName, ParentFormName, nCol, nRow, nWidth, nHeight, ;
...
LOCAL cFontHead, cFontFoot, oCol, nW
...
IF HB_ISNUMERIC( nColNumber )
nColNumber := iif( nColNumber > 0 .AND. nColNumber <= n, nColNumber, 1 )

oBrw:InsColNumber( 80, nColNumber )

oBrw:nCell := nColNumber + 1
oBrw:nFreeze := nColNumber
oBrw:lLockFreeze := .T.

IF HB_ISNUMERIC( nW ) .AND. nW > 0
oBrw:GetColumn( nColNumber ):nWidth := nW
ENDIF
ENDIF
...

Пример на изменении пошел нормально

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




Пост N: 1983
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.12.21 18:13. Заголовок: SergKis пишет: Мето..


SergKis пишет:

 цитата:
Метод тут


Большое спасибо
Это - реальная помощь

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




Пост N: 4003
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.12.21 18:57. Заголовок: gfilatov2002 Попроб..


gfilatov2002
Попробовал добавить параметр в SBrowse(... , lNumber) и строки
 
IF lRec
:lNoHScroll := .T.
ELSEIF !Empty( lNumber )
:lFooting := .T.
:lDrawFooters := .T.
:nHeightFoot := :nHeightHead
AEval( :aColumns, {| o | o:cFooting := "" } )
:InsColNumber()
:GetColumn("ORDKEYNO"):cFooting := hb_ntos( :nLen )
:nFreeze := :nColumn("ORDKEYNO")
:nCell := :nFreeze + 1
:lLockFreeze := .T.

ENDIF

в примере lNumber параметр сделал .T.
результат, в целом, получился с замечаниями:
1 - колонка SELECTOR стала 3D (кроме header)
2 - у колонки ORDKEYNO header стал 3D и цвет у строки фокуса, как у ячейки в фокусе
3 - у колонки ORDKEYNO цвет у строки фокуса, как у ячейки в фокусе
Excel отрабатывает. На карточке появляется поле #, как бы почти все ok!
В целом замечания не мешают

Разобрался, 1 и 2 это градиент откуда то взялся, а не 3D. В примерах с _TBrowse(...) и колонкой Number все ok!, такого нет.
Сделал так
 
LOCAL uParam, bRecord, nClr
...
IF lEdit
AEval( :aColumns, {| o | o:lEdit := ! o:cFieldTyp $ "+=^" } )
ENDIF
nClr := :GetColumn(1):nClrHeadBack
IF lRec
:lNoHScroll := .T.
ELSEIF !Empty( lNumber )
:lFooting := .T.
:lDrawFooters := .T.
:nHeightFoot := :nHeightHead
:InsColNumber()
:GetColumn("ORDKEYNO"):cFooting := hb_ntos( :nLen )
:nFreeze := :nColumn("ORDKEYNO")
:nCell := :nFreeze + 1
:lLockFreeze := .T.
ENDIF
END WITH

END TBROWSE

IF !Empty( lNumber )
oBrw:GetColumn("SELECTOR"):nClrBack := nClr
oBrw:GetColumn("ORDKEYNO"):nClrHeadBack := nClr
ENDIF

nY := This.ClientHeight - nGh - oApp:H1
...

Может, конечно, lNumber не надо (но с ним неплохо) ?

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




Пост N: 1984
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.12.21 21:18. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Попробовал добавить параметр в SBrowse(... , lNumber)


Думаю, что такой параметр не помешает
Благодарю за ваши усилия по доведению этой функции "до ума"

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




Пост N: 4004
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.12.21 21:28. Заголовок: gfilatov2002 Тут ещ..


gfilatov2002
Тут еще с методом
 
METHOD ExcelOle( cXlsFile, lActivate, hProgress, cTitle, hFont, lSave, bExtern, aColSel, bPrintRow ) CLASS TSBrowse
...
uData := iif( ValType( ::aColumns[ nCol ]:cFooting ) == "B", Eval( ::aColumns[ nCol ]:cFooting, nCol, Self ), ;
::aColumns[ nCol ]:cFooting )
...
Если эту правку сделать, то можно убрать строку, но может не надо убирать эту строку,
т.к. не знаю что делает на тему :cFooting метод oBrw:Report()
:InsColNumber()
:GetColumn("ORDKEYNO"):cFooting := hb_ntos( :nLen )
:nFreeze := :nColumn("ORDKEYNO")


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




Пост N: 1985
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.12.21 22:01. Заголовок: SergKis пишет: ..


SergKis пишет:

 цитата:
uData := iif( ValType( ::aColumns[ nCol ]:cFooting ) == "B", Eval( ::aColumns[ nCol ]:cFooting, nCol, Self ), ;
::aColumns[ nCol ]:cFooting )


Благодарю за поправку
Я добавил также строку, чтобы не было разрыва курсора при движении по ячейкам

 цитата:
IF ! Empty( lNumber )
oBrw:GetColumn( "SELECTOR" ):nClrBack := nClr
oBrw:GetColumn( "ORDKEYNO" ):nClrHeadBack := nClr
oBrw:GetColumn( "ORDKEYNO" ):nClrFocuBack := oBrw:nClrPane
ENDIF



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




Пост N: 4005
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.12.21 08:30. Заголовок: gfilatov2002 Добавь..


gfilatov2002
Добавьте метод в CLASS TDlu2Pix
 
METHOD TextWidth( cText, nSize, cFont, lBold, cChar ) CLASS TDlu2Pix
LOCAL hFont, nWidth

cChar := hb_defaultValue(cChar, 'A')
cText := hb_defaultValue(cText, Replicate(cChar, 2))
lBold := hb_defaultValue(lBold, .F. )
cFont := hb_defaultValue(cFont, _HMG_DefaultFontName)
nSize := hb_defaultValue(nSize, _HMG_DefaultFontSize)
IF ValType(cText) == 'N' ; cText := Replicate(cChar, cText)
ENDIF
hFont := InitFont(cFont, nSize, lBold)
nWidth := GetTextWidth(Nil, cText, hFont)
DeleteObject(hFont)

RETURN nWidth

что бы можно было width контрола получить от dlu, напрмер, кратное :W(0.5)
w := 0
o := oDlu4Font(nSize) // nSize: from 8 to 26
t := o:TextWidth('Bla bla ... bla', nSize)
a := array(20)
aFill(a, o:W(0.5))
FOR EACH n IN a
w += n
IF w > t ; EXIT
ENDIF
NEXT
? t, w, o:H1

вместо этих команд в моем варианте есть метод

METHOD Breadth( w, k ) CLASS TDlu2Pix
LOCAL nWidth := 0

WHILE w > ( nWidth += ::W( hb_defaultValue(k, 0.5) ) )
END

RETURN nWidth

т.е. делаю w := o:Breadth( o:TextWidth('Bla bla ... bla', nSize), 0.5 )


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




Пост N: 1986
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.12.21 10:28. Заголовок: SergKis пишет: Доба..


SergKis пишет:

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


Ok

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




Пост N: 4006
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.12.21 10:40. Заголовок: gfilatov2002 пишет O..


gfilatov2002 пишет
 цитата:
Ok


Тогда еще немного правок для nFontSize
 
FUNCTION oDlu4Font( nFontSize, lDlu2Pix )
...
IF lDlu2Pix
RETURN TDlu2Pix():New( nPrcW, nPrcH, nFontSize )
ENDIF
...
FUNCTION oDlu2Pixel( nPrcW, nPrcH, nFontSize )
...
IF o_AppDlu2Pixel == NIL

nFontSize := hb_defaultValue( nFontSize, _HMG_DefaultFontSize )

o_AppDlu2Pixel := TDlu2Pix():New( nPrcW, nPrcH, nFontSize )
...
CLASS TDlu2Pix
...
VAR nB INIT 0
VAR nSize INIT 0


METHOD New( nPrcW, nPrcH, nSize ) INLINE ( ::nScaleWidth := hb_defaultValue( nPrcW, 100 ), ;
::nScaleHeight := hb_defaultValue( nPrcH, 100 ), ::nSize := hb_defaultValue( nSize, ::nSize ), ;
::UnitsToPixels(), Self ) CONSTRUCTOR
...
METHOD TextWidth( cText, nSize, cFont, lBold, cChar ) CLASS TDlu2Pix
...
nSize := hb_defaultValue(nSize, iif( Empty(::nSize), _HMG_DefaultFontSize, ::nSize ) )
...
METHOD Breadth( nW, k ) CLASS TDlu2Pix
LOCAL nWidth := 0

IF HB_ISCHAR(nW) ; nW := ::TextWidth(nW)
ENDIF

WHILE nW > ( nWidth += ::W( hb_defaultValue(k, 0.5) ) )
END

RETURN nWidth
...


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




Пост N: 1987
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.12.21 10:43. Заголовок: SergKis пишет: еще ..


SergKis пишет:

 цитата:
еще немного правок


Понял, добавлю...

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




Пост N: 1988
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.12.21 11:18. Заголовок: Выложил 2-й апдейт с..


Выложил 2-й апдейт сборки 21.11 с учетом всех последних изменений

Обновил также Unicode архив.

Благодарю за огромную помощь Сергея Киселева

Желаю всем счастья и хорошего самочувствия в наступающем году

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




Пост N: 4016
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.12.21 23:47. Заголовок: gfilatov2002 Немног..


gfilatov2002
Немного поправил SBrowse Скрытый текст

Пример на базе Tsb_sbrowse Скрытый текст

Есть проблемка с Super Header и OLE, т.е. вывод таблицы в excel снимается.
Я не специалист ole excel, не работаю с ним. Потому только сообщаю

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




Пост N: 1989
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 20.12.21 11:21. Заголовок: SergKis пишет: попр..


SergKis пишет:

 цитата:
поправил SBrowse


Принято
Благодарю за помощь

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




Пост N: 4020
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.12.21 17:35. Заголовок: gfilatov2002 Поправ..


gfilatov2002
Поправил
 
METHOD LoadFields( lEditable, aColSel, cAlsSel, aNameSel, aHeadSel ) CLASS TSBrowse
...
ELSEIF cType $ "=@T"
cPicture := Nil

nSize := GetTextWidth( 0, Replicate( "9", 24 ), hFont )
ELSEIF cType $ "^+"
...
IF ValType( ::aFormatPic ) == "A" .AND. ! Empty( ::aFormatPic ) .AND. n <= Len( ::aFormatPic ) .and. ! cType $ "=@T"
cPicture := ::aFormatPic[ n ]
ENDIF
...

У этих полей Picture оказался равным '9999999999'

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




Пост N: 1990
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 23.12.21 17:47. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Поправил


Ok

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




Пост N: 1992
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.01.22 22:02. Заголовок: SergKis пишет: Если..


SergKis пишет:

 цитата:
Если возможно, включите в сборку последнюю версию LetoDbf, клиента и сервер


Сделал, будет доступно в следующей сборке
Благодарю за напоминание

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




Пост N: 4029
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.01.22 21:19. Заголовок: gfilatov2002 Показа..


gfilatov2002
Показалось интересным, правка записи в SBrowse() Скрытый текст

Пример тут https://TransFiles.ru/fvyp6

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




Пост N: 1993
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 07.01.22 22:15. Заголовок: SergKis пишет: прав..


SergKis пишет:

 цитата:
правка записи в SBrowse()


Большое спасибо
Это - то, что нужно...

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




Пост N: 4030
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.01.22 23:13. Заголовок: gfilatov2002 пишет Э..


gfilatov2002 пишет
 цитата:
Это - то, что нужно...


Пример с логическим полем в структуре и вариантом bSetUp для SBrowse()
тут https://TransFiles.ru/4zp9j

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




Пост N: 4031
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.01.22 18:06. Заголовок: gfilatov2002 Почист..


gfilatov2002
Почистил, поправил SBrowse(), добавил задать размеры через nWidth, nHeight для SBrowse_Record()
Пример и h_controlmisc2.prg тут https://TransFiles.ru/3i6zg

Еще правка
 
METHOD D( nKfc ) CLASS TDlu2Pix

LOCAL nVal := ::nPixWidthDT

IF HB_ISNUMERIC( nKfc ) .AND. nKfc > 0
IF nKfc == 1 ; nVal := ::nPixWidthDT
ELSEIF nKfc == 2 ; nVal := ::nPixWidthDT1
ELSEIF nKfc == 3 ; nVal := ::nPixWidthDT2

ELSE ; nVal := Int( nKfc * nVal )
ENDIF
ENDIF

RETURN nVal


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