| Автор | Сообщение |
|
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
[только новые]
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 7970
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.05.25 13:24. Заголовок: Небольшой глюк по ок..
Небольшой глюк по окнам. В проге стоит SET WINDOW MODAL PARENT HANDLE ON // окна Modal получают родителя MAIN окно, далее вызываю STANDART, делаю MAIN.Minimize. В окне первый же вызов MODAL окна (типа Alert* или MsgDebug) после закрытия этого окна, на экран лезет MAIN окно !!! Потом после этого не лезет. Выходим в MAIN окно, заново делаем ... и опять тоже самое, первый раз ВСЕГДА на экран лезет MAIN окно на передний план ! Юзеру ОЧЕНЬ некомфортно.... Как исправить ? 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4719
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.05.25 14:42. Заголовок: Andrey пишет Как исп..
Andrey пишет Повторю FUNC Modal2(cParent, ...) // cParent - имя Modal(1) ... ACTIVATE WINDOW &cForm IF _IsWindowDefined(cParent) DoMethod(cParent, "SetFocus") ENDIF RETURN aRet PS Вопрос такой ты уже задавал давно
|
 |
|
|
Andrey
|
| постоянный участник
|
Пост N: 7971
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.05.25 16:17. Заголовок: Я использую стандарт..
Я использую стандартные функции Alert****() ! Как я могу заблокировать показ MAIN окна в них ??? При повторном использовании функции Alert****() такого уже не происходит, т.е. первый вызов Alert****() и после него показывается MAIN окно. Можно это исправить в ядре МиниГуи ??? 
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2429
Зарегистрирован: 11.02.10
|
|
Отправлено: 01.05.25 21:21. Заголовок: Andrey пишет: Можно..
Andrey пишет: | цитата: | | Можно это исправить в ядре МиниГуи ? |
| Благодарю за сообщение Поправил возврат из функции Alert****() в вызвавшее эту функцию дочернее немодальное окно. В первый раз заметно небольшое мигание при переключении фокуса на вызвавшее окно, при повторном возврате этого мигания нет.
|
 |
|
|
Andrey
|
| постоянный участник
|
Пост N: 7972
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.05.25 23:29. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: | цитата: | | Поправил возврат из функции Alert****() в |
| Можно исправленный исходник прислать мне на почту ? Я попробую у себя в проекте.
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2430
Зарегистрирован: 11.02.10
|
|
Отправлено: 02.05.25 10:45. Заголовок: Andrey пишет: исход..
Andrey пишет: | цитата: | | исходник прислать мне на почту |
| Отправил, конечно... 
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2431
Зарегистрирован: 11.02.10
|
|
Отправлено: 05.05.25 11:23. Заголовок: Всем кому это интересно
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4720
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.05.25 08:46. Заголовок: gfilatov2002 У себя ..
gfilatov2002 У себя сделал немного по другому для SPLITBOX IF Upper( Arg2 ) == "SPLITBOX" .and. Upper( Arg3 ) $ "HEIGHT,WIDTH" ; .and. GetControlIndex( Arg2, Arg1 ) == 0 RetVal := 0 IF ( ix := GetFormIndex( Arg1 ) ) > 0 IF IsWindowHandle ( Arg8 := _HMG_aFormReBarHandle [ ix ] ) IF Upper( Arg3 ) == "WIDTH" ; RetVal := GetWindowWidth ( Arg8 ) ELSEIF Upper( Arg3 ) == "HEIGHT" ; RetVal := GetWindowHeight( Arg8 ) ENDIF ENDIF ENDIF RETURN RetVal ELSEIF ( Upper( Arg2 ) == "VSCROLLBAR" .OR. Upper( Arg2 ) == "HSCROLLBAR" ) IF .NOT. _IsWindowDefined ( Arg1 ) MsgMiniGuiError ( "Window: " + Arg1 + " is not defined." ) ENDIF ELSE VerifyControlDefined ( Arg1 , Arg2 ) ENDIF т.к. используется для вычисления клиентской области окна, то 0 тоже надо возвращать, если нет SPLITBOX, т.е. nCliH := This.ClientHeight - This.SplitBox.Height - This.StatusBar.Height
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2432
Зарегистрирован: 11.02.10
|
|
Отправлено: 06.05.25 09:43. Заголовок: SergKis пишет: 0 то..
SergKis пишет: | цитата: | | 0 тоже надо возвращать, если нет SPLITBOX |
| Благодарю за предложение Как обычно, это очень практичное предложение, которое упрощает работу. 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4721
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.05.25 16:09. Заголовок: gfilatov2002 Неболь..
gfilatov2002 Небольшая правка, Андрей нашел METHOD RButtonDown( nRowPix, nColPix, nFlags ) CLASS TSBrowse ... IF ! ::lNoVScroll .and. !Empty( ::oVScroll ) ::oVScroll:SetPos( ::RelPos( ::nLogicPos() ) ) ENDIF IF ! ::lNoHScroll .and. !Empty( ::oHScroll ) ::oHScroll:SetPos( ::nCell ) ENDIF ...
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2433
Зарегистрирован: 11.02.10
|
|
Отправлено: 06.05.25 16:26. Заголовок: SergKis пишет: Небо..
SergKis пишет: Спасибо, но такие проверки отсутствуют и в других методах, не только в RButtonDown(). | цитата: | IF ! ::lNoVScroll .AND. ::oVScroll != NIL ... |
|
|
 |
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4722
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.05.25 19:10. Заголовок: gfilatov2002 пишет т..
gfilatov2002 пишет | цитата: | | такие проверки отсутствуют и в других методах |
| По идее, надо чистить. У Андрея задача с основным экраном тсб (колонки помещаются во окно) и второй экран, где правые колонки появляются по CheckBox и колонок больше чем 2-а окна тсб, но при этом oHScroll := NIL, нет горизонтального scroll, попытка установить правый клик, привели к сбою
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2434
Зарегистрирован: 11.02.10
|
|
Отправлено: 06.05.25 19:16. Заголовок: SergKis пишет: попы..
SergKis пишет: | цитата: | | попытка установить правый клик, привели к сбою |
| Поправил, конечно. Благодарю за помощь 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4723
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.05.25 20:09. Заголовок: gfilatov2002 Сканир..
gfilatov2002 Сканировал в h_tbrowse.prg "::oHScroll", мест где надо добавлять проверку немного, самое сложное место это где надо отделить значение ::Cell := ... METHOD HThumbDrag( nPos ) CLASS TSBrowse ... IF ::lIsTxt IF ::oHScroll != NIL ::oHScroll:SetPos( ::nAt := nPos ) ENDIF ELSE IF ::lLockFreeze .AND. nPos <= ::nFreeze // watch out for frozen columns ::nCell := ::nFreeze + 1 IF ::oHScroll != NIL ::oHScroll:SetPos( ::nCell ) ENDIF ELSE ::nCell := Min( nPos, Len( ::aColumns ) ) IF ::oHScroll != NIL ::oHScroll:SetPos( ::nCell ) ENDIF ENDIF ... цветом выделенное можно вынести за ENDIF, т.е. IF ::lIsTxt ::nAt := nPos IF ::oHScroll != NIL ::oHScroll:SetPos( ::nAt ) ENDIF ELSE IF ::lLockFreeze .AND. nPos <= ::nFreeze // watch out for frozen columns ::nCell := ::nFreeze + 1 ELSE ::nCell := Min( nPos, Len( ::aColumns ) ) ENDIF IF ::oHScroll != NIL ::oHScroll:SetPos( ::nCell ) ENDIF ...
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2435
Зарегистрирован: 11.02.10
|
|
Отправлено: 06.05.25 21:21. Заголовок: SergKis пишет: METH..
SergKis пишет: | цитата: | | METHOD HThumbDrag( nPos ) CLASS TSBrowse |
| В этом методе чуть выше уже есть проверка условия | цитата: | IF ::oHScroll != NIL .AND. ! Empty( nPos ) ... |
| так что дополнительные проверки излишни. 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4724
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.05.25 22:50. Заголовок: gfilatov2002 :sm36:..
gfilatov2002  Не увидел
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4728
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.05.25 14:41. Заголовок: gfilatov2002 Предло..
gfilatov2002 Предложение добавить в _TBrowse к oTsb:lZebra вариант oTsb:lChess раскраска строк шахматкой FUNCTION _TBrowse( oParam, uAlias, cBrw, nY, nX, nW, nH ) ... LOCAL i, j, o, lChess, aChess ... .OR. !Empty( oParam:lZebraRow ) lChess := !Empty( oParam:lChess ) .OR. !Empty( oParam:lChessLine ) ; .OR. !Empty( oParam:lChessRow ) ... IF lZebra aZebra := oParam:aZebra ; DEFAULT aZebra := oParam:aZebraColor DEFAULT aZebra := { GetSysColor( COLOR_WINDOW ), GetSysColor( COLOR_BTNFACE ) } IF IsArray( aZebra ) .AND. Len( aZebra ) > 1 IF IsArray( aZebra[1] ) .and. IsArrayRGB( aZebra[1] ) aZebra[1] := HMG_RGB2n( aZebra[1] ) ENDIF IF IsArray( aZebra[2] ) .and. IsArrayRGB( aZebra[2] ) aZebra[2] := HMG_RGB2n( aZebra[2] ) ENDIF IF IsNumeric( aZebra[1] ) .AND. IsNumeric( aZebra[2] ) AAdd( aColor, { CLR_PANE, {|c,n,b| c := aZebra[2], n := aZebra[1], ; iif( b:nAt % 2 == 0, c, n ) } } ) ENDIF ENDIF ELSEIF lChess aChess := oParam:aChess ; DEFAULT aChess := oParam:aChessColor DEFAULT aChess := { GetSysColor( COLOR_WINDOW ), GetSysColor( COLOR_BTNFACE ) } IF IsArray( aChess ) .AND. Len( aChess ) > 1 IF IsArray( aChess[1] ) .and. IsArrayRGB( aChess[1] ) aChess[1] := HMG_RGB2n( aChess[1] ) ENDIF IF IsArray( aChess[2] ) .and. IsArrayRGB( aChess[2] ) aChess[2] := HMG_RGB2n( aChess[2] ) ENDIF AAdd( aColor, { CLR_PANE, {|nr,nc,nn| IF nr % 2 == 0 ; nn := iif( nc % 2 == 0, 1, 2 ) ELSE ; nn := iif( nc % 2 == 0, 2, 1 ) ENDIF Return aChess[ nn ] } } ) ENDIF ENDIF ... Применять oTsb:lChess := .T. oTsb:aChess := { CLR_HGRAY, CLR_WHITE } по умолчанию будет DEFAULT aChess := { GetSysColor( COLOR_WINDOW ), GetSysColor( COLOR_BTNFACE ) }
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2441
Зарегистрирован: 11.02.10
|
|
Отправлено: 11.05.25 18:56. Заголовок: SergKis пишет: Пред..
SergKis пишет: | цитата: | | Предложение добавить в _TBrowse вариант oTsb:lChess |
| Принято с благодарностью Порадовало использование встроенной функции IsArrayRGB() 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4733
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.05.25 11:41. Заголовок: gfilatov2002 Неболь..
gfilatov2002 Небольшая правка h_objects.prg CLASS TWndData ... VAR oEvents AS OBJECT ... METHOD Def( nIndex, cName, nHandle, nParent, cType, cVar ) INLINE ( ; ::nIndex := nIndex, ::cName := cName, ::nHandle := nHandle, ; ::nParent := nParent, ::cType := cType, ::cVar := cVar, ; ::oCargo := oHmgData(), ::oOnEventBlock := oKeyData( Self, .T. ), ; ::oEvent := oKeyData( Self ), ::oUserKeys := oHmgData(), ; ::oName := oHmgData(), ::oHand := oHmgData(), ; ::oProp := oHmgData(), ::oParam := oHmgData(), ; ::oEvents := oHmgData(), ; hmg_SetWindowObject( ::nHandle, Self ), ; ::nLeft := ::oApp:Left, ::nRight := ::oApp:Right, ; ::nTop := ::oApp:Top, ::nBottom := ::oApp:Bottom, ; ::nGapWidth := ::oApp:GapsWidth, ; ::nGapHeight := ::oApp:GapsHeight, ; Self ) ...
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2442
Зарегистрирован: 11.02.10
|
|
Отправлено: 16.05.25 12:21. Заголовок: SergKis пишет: Небо..
SergKis пишет: Поправил, конечно. Благодарю за помощь 
|
 |
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|