On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
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 [только новые]


gfilatov2002
moderator




Пост N: 1994
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 08.01.22 19:26. Заголовок: SergKis пишет: попр..


SergKis пишет:

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


Принято
Немного отформатировал, убрал в блоках кода неиспользуемое присвоение
 цитата:
nn := obr:nAt



Благодарю за помощь

SergKis пишет:

 цитата:
Еще правка


OK

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




Пост N: 4032
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.01.22 19:39. Заголовок: PS Пример тот же, но..


PS
Пример тот же, но с добавкой подключения блока кода для SBrowse_Record(...) для информации
Скрытый текст


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




Пост N: 1995
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.01.22 11:44. Заголовок: Всем кому это интересно ;-)


Подготовил третий релиз-кандидат для новой сборки 22.01
Кратко, что нового:
Скрытый текст


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




Пост N: 4034
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.01.22 16:51. Заголовок: gfilatov2002 Добавь..


gfilatov2002
Добавьте строки
 
FUNCTION _TBrowse( oParam, uAlias, cBrw, nY, nX, nW, nH )
...
IF HB_ISBLOCK( bEnd ) ; EVal( bEnd, oBrw, oParam )
ENDIF

IF HB_ISARRAY( oParam:aEvents )
FOR EACH aTmp IN oParam:aEvents
(This.Object):Event( aTmp[1], aTmp[2] )
NEXT
ENDIF

DO EVENTS

RETURN oBrw

Тогда можно делать
WITH OBJECT oTsb
:aEvents := {}
AADD( :aEvents, { 3, {|ow,ky,ob|
Local cAls
ob := iif( Empty(ob), ow:Cargo:oBrw, ob )
cAls := ob:cAlias
IF ob:nLen > 0
IF (cAls)->(RLock())
IF (cAls)->(Deleted())
(cAls)->(dbRecall())
ELSE
(cAls)->(dbDelete())
ENDIF
(cAls)->(dbUnlock())
ENDIF
//ob:DeleteRow(.F., .F.)
ob:SetFocus()
ob:DrawSelect()
DO EVENTS
ENDIF
Return Nil
} } )
...
END WITH


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




Пост N: 1996
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.01.22 17:15. Заголовок: SergKis пишет: Доба..


SergKis пишет:

 цитата:
Добавьте строки


OK

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




Пост N: 1997
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 21.01.22 11:02. Заголовок: Всем кому это интересно


Завершена подготовка новой сборки 22.01, которая будет опубликована на следующей неделе.

Искренне благодарю Сергея Киселева и Андрея Верченко за помощь при подготовке этой сборки

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




Пост N: 4035
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.01.22 13:44. Заголовок: gfilatov2002 предло..


gfilatov2002
предложение
 
CLASS TSBrowse FROM TControl
...
DATA lYesNo AS LOGICAL INIT .F. // .T. - text _HMG_aABMLangLabel[ 20\21 ]

...
METHOD DrawLine( xRow, lDrawCell ) CLASS TSBrowse
...
ELSEIF Empty( cPicture ) .OR. lMultiLine
//uData := iif( ValType( uData ) != "C", cValToChar( uData ), uData )
IF ValType( uData ) != "C"
IF ValType( uData ) == "L" .and. ::lYesNo
uData := _HMG_aABMLangLabel[ iif( uData, 20, 21 ) ]
ELSE
uData := cValToChar( uData )
ENDIF

ENDIF
ELSE
...
METHOD DrawSelect( xRow, lDrawCell ) CLASS TSBrowse
...
ELSEIF Empty( cPicture ) .OR. lMulti
//uData := iif( ValType( uData ) != "C", cValToChar( uData ), uData )
IF ValType( uData ) != "C"
IF ValType( uData ) == "L" .and. ::lYesNo
uData := _HMG_aABMLangLabel[ iif( uData, 20, 21 ) ]
ELSE
uData := cValToChar( uData )
ENDIF
ENDIF

ELSE
...

тогда вместо F\T будут тексты из _HMG_aABMLangLabel[ 20\21 ], т.е. Yes\No или от языка Да\Нет ...
В примере с SBrowse, например, делаем так Скрытый текст


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




Пост N: 4036
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.01.22 15:07. Заголовок: PS Можно сделать чер..


PS
Можно сделать через массив текстов в классе, т.е.
 
DATA aYesNo AS ARRAY INIT { _HMG_aABMLangLabel[20], _HMG_aABMLangLabel[21] }

Тогда можно ставить свой текст для вывода в методах
uData := ::aYesNo[ iif( uData, 1, 2 ) ]
но может это избыточно

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




Пост N: 1998
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 23.01.22 18:25. Заголовок: SergKis пишет: сдел..


SergKis пишет:

 цитата:
сделать через массив текстов в классе


Да, этот вариант понравился больше.
Тогда можно и не изменять пример - изменения для логических полей подтягиваются автоматически
Благодарю за предложение

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




Пост N: 4037
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.01.22 22:42. Заголовок: gfilatov2002 пишет т..


gfilatov2002 пишет
 цитата:
тот вариант понравился больше


Тогда надо еще правку внести
 
METHOD Edit( uVar, nCell, nKey, nKeyFlags, cPicture, bValid, nClrFore, nClrBack ) CLASS TSBrowse
...
ELSEIF ( cType == "L" .AND. lLogicDrop ) .OR. oCol:lComboBox
...
nHeight := Max( 10, Min( 10, Len( aGet ) ) ) * ::nHeightCell

ELSE

IF ::lYesNo
aGet := { ::aYesNo[ 1 ], ::aYesNo[ 2 ] }
ELSE
aGet := { ::aMsg[ 1 ], ::aMsg[ 2 ] }
ENDIF

IF nKey == VK_RETURN
uValue := iif( uValue, 1, 2 )
ELSE
uValue := Max( 1, AScan( aGet, Upper( Chr( nKey ) ) ) )
ENDIF

nHeight := ::nHeightCell * 4 // 1.54

ENDIF
...
В примере так можно делать
bRec := {|ob,um|
Local oc, fn
IF Empty(um) // before END TBROWSE
ob:lYesNo := .T.
ob:aYesNo[1] := "Вкл."
ob:aYesNo[2] := "Выкл."

ELSE // after END TBROWSE
fn := GetFontHandle("Bold")
FOR EACH oc IN ob:aColumns
IF oc:cName == "SELECTOR" ; LOOP
ENDIF
oc:hFontHead := fn
NEXT
ob:SetNoHoles()
ob:GoRight()
DO EVENTS
ob:SetFocus()
ENDIF
Return .T.
}
...


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




Пост N: 1999
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.01.22 11:05. Заголовок: SergKis пишет: aGet..


SergKis пишет:

 цитата:
aGet := { ::aMsg[ 1 ], ::aMsg[ 2 ] }


Благодарю за подсказку
Убрал новую переменную :aYesNo и использовал вместо нее уже готовый массив :aMsg.
Введение новой переменной :lYesNo посчитал излишним также, отображение элементов вышеназванного массива для логических полей можно всегда изменить, переопределив 1-е и 2-е значение этого массива.

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




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


gfilatov2002 пишет
 цитата:
Введение новой переменной :lYesNo посчитал излишним также, отображение элементов вышеназванного массива для логических полей можно всегда изменить, переопределив 1-е и 2-е значение этого массива.


Не очень понял. ::aMsg[1], ::aMsg[2] к отображению в ::DrawSelect() и :DrawLine() не имеет отношения, там cValToChar(uData), т.е. F\T в таблице видим. ::aMsg[1], ::aMsg[2] возникают для ::Edit(...) с cType == "L" .AND. lLogicDrop в TComboBox(). Соединить на одинаковый текст для вывода в таблице и TComboBox() на карточке надо, наверное, подключив :aMsg вместо :aYesNo. :lYesNo нужна, в таком случае, только для сохранения старого варианта.

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




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


SergKis пишет:

 цитата:
подключив :aMsg вместо :aYesNo


Именно так и сделал

SergKis пишет:

 цитата:
:lYesNo нужна, в таком случае, только для сохранения старого варианта


Такая совместимость не требуется, на мой взгляд
Использование Yes\No вместо T\F на карточке представляется вполне логичным

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




Пост N: 4039
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.01.22 16:51. Заголовок: gfilatov2002 Еще не..


gfilatov2002
Еще небольшие правки по SBrowse
 
IF /*! Empty( lNumber ) .or.*/ oBrw:nColumn( "ORDKEYNO", .T. ) > 0
oBrw:GetColumn( "SELECTOR" ):nClrBack := nClr
oBrw:GetColumn( "ORDKEYNO" ):nClrHeadBack := nClr
oBrw:GetColumn( "ORDKEYNO" ):nClrFocuBack := oBrw:nClrPane
ENDIF
...
nY := Len( oBrw:aColumns )
oBrw:aColumns[ nY - 1 ]:nWidth += 50
oBrw:aColumns[ nY - 1 ]:cName := "KEY"
oBrw:aColumns[ nY - 1 ]:lEdit := .F.

oBrw:aColumns[ nY ]:lEdit := .F.
oBrw:aColumns[ nY ]:cName := "VALUE"
...
IF HB_ISOBJECT( oBrw:Cargo ) .and. oBrw:ClassName == "TSBROWSE" .and. oBrw:Cargo:lIsDbf
oBrw:Cargo:lRecLockArea := .T.
oCol := oBrw:GetColumn("VALUE") //aColumns[3]

oCol:lEdit := .T.
...

Тогда пример с карточкой может быть такой Скрытый текст


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




Пост N: 2001
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.01.22 17:12. Заголовок: SergKis пишет: Еще ..


SergKis пишет:

 цитата:
Еще небольшие правки


OK

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




Пост N: 2002
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.01.22 10:44. Заголовок: Выложил январскую AN..


Выложил январскую ANSI сборку 22.01 с учетом всех последних изменений по адресу

http://hmgextended.com/files/CONTRIB/hmg-22.01-setup.exe

Рассматриваю эту сборку как финальную

P.S. Архив уникодной сборки также обновил...

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 7553
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.01.22 15:33. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Выложил январскую ANSI сборку 22.01 с учетом всех последних изменений по адресу


 
* Updated: '2 TBrowse Demo' sample.
Contributed by Sergej Kiselev
(see demo2.prg in folder \samples\Advanced\Tsb_2tsb)

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

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




Пост N: 4040
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.01.22 16:06. Заголовок: Dima пишет А так и д..


Dima пишет
 цитата:
А так и должно быть когда ставим курсор на какую то строку то все значения в ней по всем полям
показаны белым по белому ?


Положил на ftp картинку+prg+exe demo2.prg
смотри все ok!, собрал только что. Добавил в Title версию hmg

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 7555
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.01.22 16:35. Заголовок: SergKis я тебе тоже..


SergKis
я тебе тоже сложил картинку уже из собранного тобой модуля , ни чего не изменилось

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




Пост N: 4041
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.01.22 17:46. Заголовок: Dima Глянь еще вари..


Dima
Глянь еще вариант положил. Сделал выделенное цветом, вместо GetSysColor( COLOR_WINDOWTEXT )
 
oTsb1:aColor := { ;
{ CLR_FOCUSB, {|c,n,b| c := n, iif( b:nCell == n, -CLR_HRED, -RGB( 128, 225, 225 ) ) } }, ;
{ CLR_SELEF , CLR_BLACK }, ;
{ CLR_SELEB , {|c,n,b| c := n, iif( b:nCell == n, -CLR_BLUE, -RGB( 128, 225, 225 ) ) } } ;
}


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