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




Пост N: 5760
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.06.16 21:20. Заголовок: [?] Простой вопрос


Есть главное окно программы , в нем живут несколько CHILD окон (не MDI).
В процедуре ON INTERACTIVECLOSE главного окна есть блок кода , если он вернет
TRUE тогда закроется главное окно и программа завершится.
А вот если блок кода вернул FALSE , то как вернуть фокус ввода на окно на котором
был фокус ввода до нажатия крестика главного окна ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 151 , стр: 1 2 3 4 5 6 7 8 All [только новые]


постоянный участник




Пост N: 1008
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.06.16 22:04. Заголовок: Dima пишет: как верн..


Dima пишет:
 цитата:
как вернуть фокус ввода на окно на котором был фокус ввода до нажатия крестика главного окна


Можно так:
DEFINE WINDOW Form_Main ...
@ 0, 0 LABEL Buf WIDTH 2 HEIGHT 2 VALUE '' INVISIBLE // Buf.Cargo рабочий контрол для Cargo использования
В контрлах др. окон на GOTFOCUS делаем
Form_Main.Buf.Cargo := {_HMG_ThisFormName, _HMG_ThisControlName }
В процедуре ON INTERACTIVECLOSE главного окна при отказе от выхода
If ! empty(Form_Main.Buf.Cargo)
DoMethod(Form_Main.Buf.Cargo[1], "SetFocus") или
DoMethod(Form_Main.Buf.Cargo[1], Form_Main.Buf.Cargo[2], "SetFocus")
EndIf


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




Пост N: 5761
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.06.16 22:18. Заголовок: Попробую , спасибо !..


Попробую , спасибо !

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




Пост N: 1009
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.06.16 22:38. Заголовок: PS Для TBrowse надо ..


PS
Для TBrowse надо делать: Form_Main.Buf.Cargo := { oBrw:cParentWnd, oBrw:cControlName }

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




Пост N: 5762
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.06.16 09:29. Заголовок: SergKis пишет: Form..


SergKis пишет:

 цитата:
Form_Main.Buf.Cargo := {_HMG_ThisFormName, _HMG_ThisControlName }
В процедуре ON INTERACTIVECLOSE главного окна при отказе от выхода
If ! empty(Form_Main.Buf.Cargo)
DoMethod(Form_Main.Buf.Cargo[1], "SetFocus") или
DoMethod(Form_Main.Buf.Cargo[1], Form_Main.Buf.Cargo[2], "SetFocus")
EndIf


Сергей такие конструкции не всегда компилятся к сожалению.
Поэтому сделал так.
Завел Public Mcargo:=""
В ON GOTFOCUS дочерних окно добавил Mcargo:=_HMG_ThisFormName
В процедуре ON INTERACTIVECLOSE главного окна при отказе от выхода
If !empty(Mcargo)
IF IswindowDefined(&mCargo)
DoMethod(mCargo, "SetFocus")
Endif
endif


Еще вопрос.
Как закрыть все CHILD окна главного окна (не MDI) ?

ЗЫ
Что то типа _MdiChildCloseAll() но для обычных окон


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




Пост N: 1010
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.06.16 10:14. Заголовок: Dima пишет:такие кон..


Dima пишет:
 цитата:
такие конструкции не всегда компилятся


Используй вместо псевдо ООП команды
SetProperty(cForm, cControl, "Cargo", uValue)
GetProperty(cForm, cControl, "Cargo")
DoMethod(cForm,...)

 цитата:
Как закрыть все CHILD окна главного окна


Смотри оглавление по функциям h_window.prg, там есть
ReleaseAllWindows ()
_ReleaseWindow ( FormName )
... т.е. можно делать
 
For i := 1 To Len(_HMG_aFormNames)
If _HMG_aFormType[ i ] != "A" // не main окно
If _IsWindowDefined (_HMG_aFormNames[ i ])
_ReleaseWindow ( _HMG_aFormNames[ i ] )
EndIf
EndIf
Next

часто делаю так, при создании окна документа, закрываю (release) все окна справочников с запоминанием состояния где были в rowse\tbrowse\... и при вызове справочника повторно востанавливаю окно как было или с новым подводом в нем на нужную запись

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




Пост N: 5763
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.06.16 10:24. Заголовок: SergKis пишет: _Rel..


SergKis пишет:

 цитата:
_ReleaseWindow ( FormName )


Спасибо за наводку.
Сразу вышел на нужный пример C:\MiniGUI\SAMPLES\BASIC\MULTI_INSTANCE\

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




Пост N: 1011
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.06.16 11:30. Заголовок: Dima пишет:Завел Pub..


Dima пишет:
 цитата:
Завел Public Mcargo:=""


В такой схеме тебе самому надо следить за очисткой переменной, тогда лучше Private под каждое окно, но с Label по мне изящнее, можно использовать и псевдо ооп и ф-ии и следить за освобождением не надо, Release само все сделает
Для доступа к карго исп. _SetGetUserData( cForm, cControl [, uValue] )

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




Пост N: 5764
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.06.16 12:28. Заголовок: SergKis Ты прав , я..


SergKis
Ты прав , я это не учел.
....подумал и проверил
В ON GOTFOCUS дочерних окон живет Mcargo:=_HMG_ThisFormName поэтому получив фокус
ввода на таком из окон я имею имя окна в Mcargo поэтому в ON INTERACTIVECLOSE главного при отказе
от закрытия я всегда верну фокус ввода на окно на котором был , вот так (ниже). Разве нет ?
 
If !empty(Mcargo)
IF IswindowDefined(&mCargo)
DoMethod(mCargo, "SetFocus")
Endif
endif
endif



А если окна нет (закрыли например) то для этого там проверка в виде IF IswindowDefined(&mCargo)

SergKis пишет:

 цитата:
но с Label по мне изящнее


Label не использую и хотел было Cargo к окну прикрутить а у него и нет такой фичи.

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




Пост N: 1012
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.06.16 13:11. Заголовок: Dima пишет:хотел был..


Dima пишет:
 цитата:
хотел было Cargo к окну прикрутить а у него и нет такой фичи


В своей версии мы сделали в ch
#xtranslate _HMG_aFormMiscData1 => _HMG_SYSDATA\[_HMG_SYSDATA_SIZE+1\]
#xtranslate _HMG_aFormMiscData2 => _HMG_SYSDATA\[_HMG_SYSDATA_SIZE+2\]
в h_init.prg
PUBLIC _HMG_SYSDATA [ _HMG_SYSDATA_SIZE + 2 ]

во все prg создание окон добавили (по аналогии с контролом)
_HMG_aFormMiscData1 [ i ] := { NIL, NIL, NIL } // для своих целей по окну
_HMG_aFormMiscData2 [ i ] := "" // для Cargo

в h_evente.prg на WM_DESTROY добавили
_HMG_aFormMiscData1 [ i ] := { NIL, NIL, NIL }
_HMG_aFormMiscData2 [ i ] := ""

для окон _HMG_aFormMiscData2 [ i ] исп. как Cargo окна

Если не менять lib, то Label с одинаковым именем на всех окнах - тоже решает все вопросы, для прилепливания к окну различных данных общего назначения. Не забываем, что все контролы имеют cargo - туда тоже можно совать инфу для спец. использования, например в колонку TsBrowse (cargo) можно записывать цвета, используемые этой колонкой при отображении от разных условий в колонке и добывать их в блоках кода цветов на колонку

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




Пост N: 5765
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.06.16 13:46. Заголовок: SergKis пишет: В св..


SergKis пишет:

 цитата:
В своей версии мы сделали в ch
#xtranslate _HMG_aFormMiscData1 => _HMG_SYSDATA\[_HMG_SYSDATA_SIZE+1\]
#xtranslate _HMG_aFormMiscData2 => _HMG_SYSDATA\[_HMG_SYSDATA_SIZE+2\]
в h_init.prg


Странно что Григорий не сделал этого , штука то нужная.

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




Пост N: 5766
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.06.16 15:12. Заголовок: Сергей еще вопрос . ..


Сергей еще вопрос .
В принципе я его решил по своему , но вдруг что подскажешь.
Есть ряд справочников с одинаковой структурой. Все выводил в окна у которых
левый верхний угол одинаков , поэтому при открытии следующего справочника
визуально было не понятно сколько же справочников в данный момент открыто.
Поэтому перед вызовом справочника проверяю открытые окна и найдя первое
подходящее дергаю от туда координаты левого верхнего угла.
В программе перед тем как создать окно делаю так:
 
a:=GetProperty("Form_0", "Row")+GetBorderHeight()+GetTitleHeight()+GetMenubarHeight()+5
b:=(GetProperty("Form_0", "Width")/2) -(WidthWindow_MyApl/4)

arw:=GetRowColExceptMain()
if !empty(arw)
a:=arw[1]+GetTitleHeight()
b:=arw[2]+GetTitleHeight()
endif

DEFINE WINDOW SPEC AT a , b WIDTH ..............


Фунция GetRowColExceptMain()
 
Func GetRowColExceptMain()

LOCAL i, nFormCount := LEN (_HMG_aFormHandles)
local amas:={}

FOR i := 1 TO nFormCount
IF _HMG_aFormType [ i ] <> "A"
IF _IsWindowDefined ( _HMG_aFormNames [ i ] )
if ! isiconic(GetFormHandle( _HMG_aFormNames [ i ] ))
aadd(amas,GetProperty(_HMG_aFormNames [ i ], "row"))
aadd(amas,GetProperty(_HMG_aFormNames [ i ], "col"))
Return amas

endif
ENDIF
ENDIF
NEXT

Return amas



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




Пост N: 5767
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.06.16 15:47. Заголовок: Dima пишет: Фунция ..


Dima пишет:

 цитата:
Фунция GetRowColExceptMain()


Переделал ее
 
Func GetRowColExceptMain()

LOCAL i, nFormCount := LEN (_HMG_aFormHandles)
local amas:={}
local ret:={}

FOR i := 1 TO nFormCount
IF _HMG_aFormType [ i ] <> "A" // не main окно
IF _IsWindowDefined ( _HMG_aFormNames [ i ] )
if !isiconic(GetFormHandle( _HMG_aFormNames [ i ] ))
aadd(amas,{GetProperty(_HMG_aFormNames [ i ], "row"),GetProperty(_HMG_aFormNames [ i ], "col")})
endif
ENDIF
ENDIF
NEXT
if len(amas)#0
aadd(ret,amas[len(amas)][1])
aadd(ret,amas[len(amas)][2])
endif

Return ret




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




Пост N: 1013
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.06.16 15:48. Заголовок: Dima Окна у себя на..


Dima
Окна у себя называю так;
wDok_... - документы
wSpr_... - справочники
wOtb_... - отбор\выборка\справка
wSet_... - установки\настройки
wPrn_... - для печатей
...
по 4 байтам орентируюсь, чтобы убить справочники при вызове документов (что бы не мешали)
тебе можно как в в Mdi сделать расположеие лесенкой справочников (смещая на высоту Title окна), организовав стек(и) для окон (можно справочники отдельно, док. тоже ...) и перебирать стеки и т.д.

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




Пост N: 5768
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.06.16 15:54. Заголовок: SergKis пишет: тебе..


SergKis пишет:

 цитата:
тебе можно как в в Mdi сделать расположеие лесенкой справочников (смещая на высоту Title окна)


Так и сделал , пока без стеков (красоту позже наводить буду )
SergKis пишет:

 цитата:
Окна у себя называю так


Спасибо за идею.

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




Пост N: 5769
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.06.16 16:12. Заголовок: Как организовать ред..


Как организовать редактирование ячейки что бы (пока не знаю как контрол называется )
можно было вводить (выбирать) только (например): Кг , Граммы , Метры , Литры из некоего списка ?

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




Пост N: 1014
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.06.16 16:17. Заголовок: Если разговор о ячей..


Если разговор о ячейке Tsb, то см. пример Tsb_config, колонка Operator, если др. контрол, то COMBOBOX смотри в примерах

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




Пост N: 5770
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.06.16 16:31. Заголовок: SergKis пишет: Есл..


SergKis пишет:

 цитата:

Если разговор о ячейке Tsb, то см. пример Tsb_config, колонка Operator


Да оно

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




Пост N: 5771
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.06.16 17:44. Заголовок: Идею понял , не поня..


Идею понял , не понятно как мышкой завершить ввод , выбрав нужное.
Пока ясно что нужно нажать Enter. А если клавы нет ?

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




Пост N: 1015
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.06.16 18:49. Заголовок: Dima пишет: не понят..


Dima пишет:
 цитата:
не понятно как мышкой завершить ввод , выбрав нужное


Как то не задумывался над этим.
В классе TComboBox есть блок кода bCloseUp при закрытии списка срабатывает, но в Metod Edit(...) TsBrowse есть только такое
 
oCol:oEdit := TComboBox():New( nRow+::aEditCellAdjust[1], nCol+::aEditCellAdjust[2], ;
bSETGET( uValue ), aGet, nWidth+::aEditCellAdjust[3], nHeight+::aEditCellAdjust[4], ;
Self, bChange, nClrFore, nClrBack, hFont, cMsg, ::cChildControl, cWnd )

// oCol:oEdit:bCloseUp := {|o| o:PostMsg( WM_KEYDOWN, VK_RETURN, 0 )} //1.54

oCol:oEdit:lAppend := ::lAppendMode

выделенное нужно, но как поставить такой блок кода на oCol:oEdit:bCloseUp не понятно

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




Пост N: 1016
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.06.16 19:41. Заголовок: SergKis пишет:как по..


SergKis пишет:
 цитата:
как поставить такой блок кода на oCol:oEdit:bCloseUp


может так подойдет (использовать в TsColumn при lComboBox := .T. переменную bAction - она для TBtnBox):
 
METHOD SetData( nColumn, bData, aList, bCloseUp ) CLASS TSBrowse

If Valtype( nColumn ) == "C"
nColumn := ::nColumn( nColumn ) // 21.07.2015
EndIf

If Valtype( nColumn ) != "N" .or. nColumn <= 0
Return Nil
EndIf

If aList != Nil

If ValType( aList[ 1 ] ) == "A"
::aColumns[ nColumn ]:aItems := aList[ 1 ]
::aColumns[ nColumn ]:aData := aList[ 2 ]
::aColumns[ nColumn ]:cDataType := ValType( aList[ 2, 1 ] )
Else
::aColumns[ nColumn ]:aItems := aList
EndIf

::aColumns[ nColumn ]:lComboBox := .T.
::aColumns[ nColumn ]:bAction := bCloseUp

EndIf

If bData != Nil

If Valtype( bData ) == "B"
::aColumns[ nColumn ]:bData := bData
Else
::aColumns[ nColumn ]:bData := { || (bData) }
EndIf

EndIf

Return Self

METHOD Edit( uVar, nCell, nKey, nKeyFlags, cPicture, bValid, nClrFore, ;
nClrBack ) CLASS TSBrowse
...
::cChildControl := GetUniqueName( "ComboBox" )

oCol:oEdit := TComboBox():New( nRow+::aEditCellAdjust[1], nCol+::aEditCellAdjust[2], ;
bSETGET( uValue ), aGet, nWidth+::aEditCellAdjust[3], nHeight+::aEditCellAdjust[4], ;
Self, bChange, nClrFore, nClrBack, hFont, cMsg, ::cChildControl, cWnd )

If oCol:lComboBox .and. ValType(oCol:bAction) == "B"
oCol:oEdit:bCloseUp := oCol:bAction
EndIf

// oCol:oEdit:bCloseUp := {|o| o:PostMsg( WM_KEYDOWN, VK_RETURN, 0 )} //1.54
oCol:oEdit:lAppend := ::lAppendMode
...


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




Пост N: 5772
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.06.16 21:28. Заголовок: Попробую позже , спа..


Попробую позже , спасибо.
В Tsbrowse поймал непонятку.
Есть
 
obrw:GetColumn("naim"):bPrevEdit := { |a, b, lLock| If( lLock := (obrw:cAlias)->(RLock()),;
(obrw:cAlias)->(dbUnLock()), Msgstop("Запись заблокирована","Внимание")), lLock }

Если нажимаю Enter или мышкой дважды и запись блокирована то вываливается сообщение что запись заблочена и далее не пускает.
Что нормально.
Стоит нажать пробел или любую буквенно-цифровую педаль то месага так же появляется но GET появляется.
Что не так делаю ?


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




Пост N: 1017
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.06.16 22:00. Заголовок: Dima пишет:но GET по..


Dima пишет:
 цитата:
но GET появляется


срабатывает метод KeyChar, попробуй поставь в блок кода obrw:nUserKey := 255 до lLock
у себя я ввел переменную в TsBrowse lNoKeyChar := .T. и отлючил по умолчанию

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




Пост N: 1018
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.06.16 22:10. Заголовок: Dima в bPrevEdit пе..


Dima
в bPrevEdit передаются Eval( oCol:bPrevEdit, uValue, Self )
лучше использовать их в блоке кода а не public\private перемменную obrw
 
obrw:GetColumn("naim"):bPrevEdit := { |a, b, lLock| If( lLock := (b:cAlias)->(RLock()),;
(b:cAlias)->(dbUnLock()), Msgstop("Запись заблокирована","Внимание")), lLock }




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




Пост N: 5773
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.06.16 22:15. Заголовок: SergKis Понял, попр..


SergKis
Понял, попробую , отпишу.


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




Пост N: 1019
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.06.16 22:47. Заголовок: SergKis пишет:постав..


SergKis пишет:
 цитата:
поставь в блок кода obrw:nUserKey := 255


Не поможет, в методе KeyDown стоит
::oWnd:nLastKey := ::nLastKey := ::nUserKey := nKey
надо использовать bUsersKey функцию и возвращать .F.
 
uReturn := Eval( ::bUserKeys, nKey, nFlags, Self )

If uReturn != Nil .and. ValType( uReturn ) == "N" .and. uReturn < 200 // interpreted as a virtual key code to
nKey := uReturn // change the original key pressed
ElseIf uReturn != Nil .and. ValType( uReturn ) == "L" .and. ! uReturn
::nUserKey := 255 // want to inhibit the KeyDown and KeyChar Methods for key pressed
Return 0
EndIf



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




Пост N: 5774
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.06.16 22:59. Заголовок: SergKis пишет: надо..


SergKis пишет:

 цитата:
надо использовать bUsersKey функцию и возвращать .F.


Чудеса ))
Как примерно она должна выглядеть ?
У меня так (может где и промахнулся)
oBrw:bUserKeys := {|nKey,nFlg,oBrw| UserKeys(nKey, nFlg, oBrw) }
 
STATIC FUNCTION UserKeys( nKey, nFlag, o )
Local nRec, oCell, cVal, nRow, uRet, cKey

nFlag := Nil



If nKey == VK_F1

ElseIf nKey == VK_INSERT

if msgokCancel("Добавить новую запись ?","Внимание")
Addrecs(o,"ID")
endif
uRet := .F.

ElseIf nKey == VK_F3
ElseIf nKey == VK_F5
ElseIf nKey == VK_F6
ElseIf nKey == VK_F7
ElseIf nKey == VK_F8
ElseIf nKey == VK_F9
ElseIf nKey == VK_F11
ElseIf nKey == VK_F12

ElseIf nKey == VK_RETURN
uRet := .F.

ElseIf nKey == VK_F4
_PushKey(VK_SPACE)
uRet := .f.

ElseIf nKey >= 32 .and. nKey < 254
uRet := .f.

EndIf

Return uRet



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




Пост N: 1020
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.06.16 00:15. Заголовок: Dima коректировка п..


Dima
коректировка по VK_RETURN ?
пробни
ElseIf nKey == VK_RETURN
// uRet := .F.

ElseIf nKey == VK_F4

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




Пост N: 5775
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.06.16 09:11. Заголовок: SergKis Что то я по..


SergKis
Что то я потерялся.
Значит у меня так
 
obrw:GetColumn("naim"):bPrevEdit := { |a, b, lLock| If( lLock := (b:cAlias)->(RLock()), ;
(b:cAlias)->(dbUnLock()), Msgstop("Запись заблокирована","Внимание")), lLock }
.....
obrw:nFireKey := VK_SPACE
oBrw:bUserKeys := {|nKey,nFlg,oBr| UserKeys(nKey, nFlg, oBr) }


 
STATIC FUNCTION UserKeys( nKey, nFlag, o )
*-----------------------------------
Local uRet


If nKey == VK_F1

ElseIf nKey == VK_INSERT

if msgokCancel("Добавить новую запись ?","Внимание")
Addrecs(o,"ID")
endif
uRet := .F.

ElseIf nKey == VK_F3
ElseIf nKey == VK_F5
ElseIf nKey == VK_F6
ElseIf nKey == VK_F7
ElseIf nKey == VK_F8
ElseIf nKey == VK_F9
ElseIf nKey == VK_F11
ElseIf nKey == VK_F12

ElseIf nKey == VK_RETURN



ElseIf nKey == VK_F4
_PushKey(VK_SPACE)
uRet := .f.

ElseIf nKey >= 32 .and. nKey < 254
EndIf

Return uRet



Если запись заблочена и я нажал ENTER , тогда вылезет Msgstop("Запись заблокирована","Внимание") и дальше в
GET не пустит.
Но если нажать пробел или буквенно цифровую педаль тогда тоже вылезает Msgstop("Запись заблокирована","Внимание")
но в GET пускает и не пойму как это предотвратить.

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




Пост N: 5776
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.06.16 09:30. Заголовок: Разобрался...


Разобрался.

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




Пост N: 4975
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.06.16 13:57. Заголовок: Dima пишет: Разобра..


Dima пишет:

 цитата:
Разобрался.


Поделись !

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




Пост N: 5778
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.06.16 14:03. Заголовок: Andrey пишет: Подел..


Andrey пишет:

 цитата:
Поделись !


Чем ?

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




Пост N: 5779
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.06.16 15:25. Заголовок: Каким образом в TSB ..


Каким образом в TSB в bUserKeys заблочить нажатие ENTER но что бы
двойной клик мышки остался для входа в редактирование.
Если блочу ENTER тогда блочится и двойной клик мыши , вероятно код у них одинаков.
Хотел редактирование повесить только на VK_F4 и двойной клик мыши.
С VK_F4 все понятно , делаю :nFireKey := VK_F4 и в bUserKeys при нажатии VK_F4 верну TRUE

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




Пост N: 5780
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.06.16 16:41. Заголовок: SergKis Дошли руки ..


SergKis
Дошли руки потестить твою функцию SetNoHole , вызываю ее после END TBROWSE
 
FUNCTION SetNoHole( obr ) // убрать дырку
LOCAL nI, nK, nHeight
LOCAL nHole := obr:nHeight - obr:nHeightHead - obr:nHeightSuper - ;
obr:nHeightFoot - obr:nHeightSpecHd - ;
If( ! obr:lNoHScroll, 16, 0 )

nHole -= ( Int( nHole / obr:nHeightCell ) * obr:nHeightCell )
nHole -= 1
nHeight := nHole

nI := If( obr:nHeightSuper > 0, 1, 0 ) + ;
If( obr:nHeightHead > 0, 1, 0 ) + ;
If( obr:nHeightSpecHd > 0, 1, 0 ) + ;
If( obr:nHeightFoot > 0, 1, 0 )

If nI > 0 // есть заголовки

If obr:nHeightSuper > 0
obr:nHeightSuper += nK
nHole -= nK
EndIf
If obr:nHeightSpecHd > 0
obr:nHeightSpecHd += nK
nHole -= nK
EndIf

If obr:nHeightFoot > 0
obr:nHeightFoot += nK
nHole -= nK
EndIf
If obr:nHeightHead > 0
obr:nHeightHead += nHole
EndIf
Else // нет заголовков, можно уменьшить размер tsb на размер nHole

SetProperty(obr:cParentWnd, obr:cControlName, "Height", ;
GetProperty(obr:cParentWnd, obr:cControlName, "Height") - nHole)

EndIf

obr:Display()

RETURN nHeight


Там какой то косяк однако. Дырки да нет. Но стоит курсором доехать до нижней границы бровса
и продолжать двигаться вниз то записи над курсором ломаются и в них дублируется одна и та же строка.
При движении вверх , внизу бровса имеет место фантомная строка.

Скрин когда едем вниз

Когда едем вверх (яйцо постоянно живет в самом низу)



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




Пост N: 1021
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.06.16 16:45. Заголовок: Dima пишет:Если блоч..


Dima пишет:
 цитата:
Если блочу ENTER тогда блочится и двойной клик мыши , вероятно код у них одинаков


без правки не обойтись:
 
METHOD LDblClick( nRowPix, nColPix, nKeyFlags ) CLASS TSBrowse
...
If ( nClickRow == ::nRowPos .and. nClickRow > 0 ) .or. ( nClickRow == ::nRowPos .and. ! ::lDrawHeaders )

If ::lCellBrw .and. ::IsEditable( nCol )

::nColSpecHd := 0
If ValType( Eval( ::aColumns[ nCol ]:bData ) ) == "L" .and. ;
::aColumns[ nCol ]:lCheckBox // virtual checkbox
::PostMsg( WM_CHAR, VK_SPACE, 0 )

ElseIf ::bLDblClick != Nil
Eval( ::bLDblClick, uPar1, uPar2, nKeyFlags, Self )

Else
::PostMsg( WM_KEYDOWN, VK_RETURN, 0 )
EndIf

Return 0



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




Пост N: 1022
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.06.16 16:51. Заголовок: Dima пишет:Дошли рук..


Dima пишет:
 цитата:
Дошли руки потестить твою функцию SetNoHole


текст надо взять из примера Tsb_Seek_2 (если происходит искажение отображения, играться надо параметром nDelta) :Скрытый текст

использовать для окна с NOSIZE, если resize tsb возможен, ф-ю не применять

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




Пост N: 5781
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.06.16 17:05. Заголовок: SergKis пишет: текс..


SergKis пишет:

 цитата:
текст надо взять из примера Tsb_Seek_2 (если происходит искажение отображения, играться надо параметром nDelta)


Взял , проверил с таким вызовом TBrw_NoHoles( oBrw, , .t. ) и получил все те же проблемы.
Вызвав так TBrw_NoHoles( oBrw, 0 , .t. ) , проблем нет , но есть дырка.
Что то в ней не так....

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




Пост N: 5782
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.06.16 17:09. Заголовок: Проверил пример Tsb_..


Проверил пример Tsb_Seek_2 , имею те же проблемы

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




Пост N: 1023
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.06.16 17:12. Заголовок: Dima поставь nDelta..


Dima
поставь nDelta := 2 \ 3
к сожалению tsb очень чувствителен к изменению размеров высот его элементов, зависит от разрешения монтора, фонта
у себя вынес значение nDelta в ini и бывает оставляю дырку в 1\2\3 пикселя

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




Пост N: 1024
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.06.16 17:18. Заголовок: Dima пишет:Проверил ..


Dima пишет:
 цитата:
Проверил пример Tsb_Seek_2 , имею те же проблемы


у меня на двух компах с 15' и 11' экраном все хорошо с примером, взят как есть

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




Пост N: 5783
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.06.16 17:20. Заголовок: SergKis пишет: пост..


SergKis пишет:

 цитата:
поставь nDelta := 2 \ 3


Это не выход , так как ты верно пишешь что разрешение может быть разное , фонты да
и размеры самого бровса , не писать же в INI nDelta для каждого бровса , да юзера
заклеймят меня )))

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




Пост N: 1025
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.06.16 17:30. Заголовок: Dima пишет: не писат..


Dima пишет:
 цитата:
не писать же в INI nDelta для каждого бровса


у меня один nDelta на всю прогу и менять пришлось только 1 раз (правда и фонт для всех tsb один на всю прогу)
есть др. путь написать resize для tsb и использовать его меняя размеры окна
таже можно уст. размеры tsb заранее просчитав (константы для элементов header, line, footer) все высоты tsb и получив общую высоту tsb и установить ее (например от количества строк в tsb)

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




Пост N: 5784
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.06.16 17:34. Заголовок: SergKis пишет: таже..


SergKis пишет:

 цитата:
таже можно уст. размеры tsb заранее просчитав (константы для элементов header, line, footer) все высоты tsb и получив общую высоту tsb и установить ее (например от количества строк в tsb)


Понял.

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




Пост N: 1026
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.06.16 17:35. Заголовок: Dima пишет:не писать..


Dima пишет:
 цитата:
не писать же в INI nDelta для каждого бровса


с др. стороны в ini сохраняются все размеры (устанавливает\раздвигает клиент) колонок для каждого бровсе, то добавить nDelta пустяковое дело

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




Пост N: 5785
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.06.16 17:45. Заголовок: SergKis Согласен...


SergKis
Согласен.

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




Пост N: 1028
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.06.16 08:24. Заголовок: Dima Еще про tsb, &..


Dima
Еще про tsb, "дырку" и HScroll. Высота HScroll в расчетах исп. 16, а в реальности при LargeFont 24 (Андрей проверял по моей просьбе), т.е. с HScroll высота tsb может быть изначально посчитана с ошибкой и nDelta - должна подбираться руками. Я отказался от использования HScroll, поставил lNoHScroll := .T. глобально в своей либе

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




Пост N: 5786
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.06.16 09:12. Заголовок: SergKis пишет: пост..


SergKis пишет:

 цитата:
поставил lNoHScroll := .T.


Но тут был подводный камень если не ошибаюсь , после такой установки переставала срабатывать
растяжка в :nAdjColumn

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




Пост N: 1029
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.06.16 09:28. Заголовок: Dima пишет: перестав..


Dima пишет:
 цитата:
переставала срабатывать растяжка в :nAdjColumn


Так она работает только на 1-м экране (если не ошибаюсь), так что толку от нее, на мой взгляд, не много, тем более пользователь сам уст. ширину колонок. В hwg сделано, на мой взгляд, лучше - последняя колонка растягивается на остаток ширины бровсе

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




Пост N: 5787
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.06.16 09:33. Заголовок: SergKis пишет: В hw..


SergKis пишет:

 цитата:
В hwg сделано, на мой взгляд, лучше - последняя колонка растягивается на остаток ширины бровсе


Так и тут так же, только не последняя а та что указана в :nAdjColumn

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




Пост N: 1030
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.06.16 09:37. Заголовок: это только на первом..


это только на первом экране, после происходит искажение последней колонки (header,line,footer), в hwg нет искажения правой последней колонки

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




Пост N: 5788
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.06.16 10:47. Заголовок: SergKis пишет: это ..


SergKis пишет:

 цитата:
это только на первом экране, после происходит искажение последней колонки


не замечал такого

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




Пост N: 5789
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.06.16 11:08. Заголовок: А как поймать имя бр..


А как поймать имя бровса в форме ..
Имя формы так ThisWindow а бровс ?

ps
я про альтернативный синтаксис

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




Пост N: 1031
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.06.16 11:36. Заголовок: Dima пишет:я про аль..


Dima пишет:
 цитата:
я про альтернативный синтаксис


Tsb мимо него проходит.
Как объект tsb получать, см. Tsb_seek_2, Tsb_LoadFields

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




Пост N: 1032
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.06.16 11:42. Заголовок: Dima пишет:не замеча..


Dima пишет:
 цитата:
не замечал такого


На след. экранах (при прокрутке HScroll) на короткий остаток колонки впихивается широкая колонка, если в ней superheader, то совсем беда с отображением. По мне лучше делать "управляемый" скролинг - удалять часть колонок (группой) и вставлять группу других, благо это не сложно

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




Пост N: 5790
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.06.16 11:44. Заголовок: Понял. Спасибо..


Понял.
Спасибо

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




Пост N: 5791
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.06.16 11:46. Заголовок: Имею xy+=getproperty..


Имею xy+=getproperty(ThisWindow.name,"Button_1","Width")+11
Как это переписать не используя getproperty ?

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




Пост N: 1033
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.06.16 12:12. Заголовок: Dima пишет:Как это п..


Dima пишет:
 цитата:
Как это переписать не используя getproperty ?


FormName.Button_1.Width
GetWindowWidth(GetControlHandle("Button_1", _HMG_ThisFormName))


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




Пост N: 4978
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.06.16 12:20. Заголовок: Добавлю 5 копеек про..


Добавлю 5 копеек про растяжку :nAdjColumn
Заметил такую странность, если её использовать, то ширина некоторых колонок начинает сбиваться, срезается.
В примере \MiniGUI\SAMPLES\Advanced\Tsb_config приходиться запоминать значение:
oBrw:bInit := {|| oBrw:SetColSize( 2, nWidthFirstColumn )}
А потом в ResizeBrowse() всегда восстанавливать:
Eval(oBrw:bInit)

Перестал использовать этот параметр, хотя удобный вроде.



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




Пост N: 5794
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.06.16 12:29. Заголовок: SergKis пишет: Form..


SergKis пишет:

 цитата:
FormName.Button_1.Width


Такой вариант не компилится совсем

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




Пост N: 1036
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.06.16 13:55. Заголовок: Dima пишет:Такой вар..


Dima пишет:
 цитата:
Такой вариант не компилится совсем


ты вместо FormName дал реальное имя окна, на котором Button_1 и их DEFINE уже были. см. Minigui.chm -> ControlsCommand->button в самом конце properties:, events:, metods:
тыкаешь Width и т.д.
Я в основном пользуюсь от handle получать размеры GetWindow...(handle)

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




Пост N: 5797
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.06.16 13:59. Заголовок: SergKis пишет: ты в..


SergKis пишет:

 цитата:
ты вместо FormName дал реальное имя окна


Понял , не хотел привязываться точно к имени окна , попробовал так
xy+=ThisWindow.name.Button_1.Width+11
Не компилится
Плюнул и оставил так
xy+=getproperty(ThisWindow.name,"Button_1","Width")+11


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




Пост N: 1038
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.06.16 14:29. Заголовок: Dima пробни xy+=Thi..


Dima
пробни
xy+=This.Button_1.Width+11
и глянь i_this.ch

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




Пост N: 5798
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.06.16 14:42. Заголовок: SergKis пишет: xy+=..


SergKis пишет:

 цитата:
xy+=This.Button_1.Width+11


Пробовал так , не компилится...

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




Пост N: 1039
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.06.16 14:51. Заголовок: Dima пишет:Пробовал ..


Dima пишет:
 цитата:
Пробовал так , не компилится...


Тады ОЙ !

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




Пост N: 5822
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.06.16 21:42. Заголовок: Как узнать нажата кл..


Как узнать нажата клавиша (юзер на нее чашку кофе поставил ) или уже отпущена ?
Интересуют VK_DOWN и VK_UP
Через Sendmessage это можно получить ?

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




Пост N: 1051
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.06.16 17:36. Заголовок: Dima пишет Интересую..


Dima пишет
 цитата:
Интересуют VK_DOWN и VK_UP


с VK_DOWN - это bUserKeys, а с VK_UP нету, есть метод KeyUp, но в нем нет то, что надо
По идее надо было бы иметь bKeyDown и bKeyUp для таких целей

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




Пост N: 5823
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.06.16 19:44. Заголовок: Сергей я не много не..


Сергей я не много не о том.
Есть главный бровс и подчиненный в одном окне.
При движении по главному , показываю данные в подчиненном по ключу из базы главного в :BChange
Там живет что то типа фильтра (SCOPE) + Obrw:Reset() подчиненного бровса.
Так вот если база довольно большая И юзер зажал стрелку ВНИЗ то через какой то момент
бровс может коника дать....то есть зависнет.
Нужна идея (Игорь в курсе) что бы освежать подчиненный бровс только после того как
юзер отпустил в конце концов стрелку вниз (вверх и тд и тп включая колесо мыши)


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




Пост N: 1052
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.06.16 20:13. Заголовок: Дима, я о том же. Мн..


Дима, я о том же. Мне пришлось влезть в KeyDown и сделать (у меня базовая версия 2.07 и изменения [в рамках разумного переношу из тек.])
 
METHOD KeyDown( nKey, nFlags ) CLASS TSBrowse
...
Case nKey == VK_UP
::GoUp()

If ::nRowPos == 1
If ::nKeyDownOld == nKey
::nKeyDownCnt += 1
EndIf
If ::nKeyDownCnt >= ( ::nRowCount() )
PostMessage(::hWnd, WM_KEYUP , VK_UP , 0)
PostMessage(::hWnd, WM_KEYDOWN, VK_PRIOR, 0)
EndIf
EndIf
::nKeyDownOld := nKey

Case nKey == VK_DOWN
::GoDown()
x
If ::nRowPos == ::nRowCount()
If ::nKeyDownOld == nKey
::nKeyDownCnt += 1
EndIf
If ::nKeyDownCnt >= ( ::nRowCount() )
PostMessage(::hWnd, WM_KEYUP , VK_DOWN, 0)
PostMessage(::hWnd, WM_KEYDOWN, VK_NEXT, 0)
EndIf
EndIf
::nKeyDownOld := nKey

Case nKey == VK_LEFT
...



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




Пост N: 1053
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.06.16 20:17. Заголовок: PS а подчиненный бро..


PS
а подчиненный бровс обновлять по таймеру при смене ключа связки раз в 1 сек. такой механизм работает со времен VO

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




Пост N: 5824
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.06.16 20:21. Заголовок: Понял , думал есть к..


Понял , думал есть какие другие идеи.
Игорь тоже предлагает по таймеру.
Проехали тогда.

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




Пост N: 5825
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.06.16 20:24. Заголовок: ЗЫ В консоли по ходу..


ЗЫ
В консоли по ходу ни чего не виснет при обновлении подчиненного бровса и даже
ни какой велосипед сочинять не надо.
Пусть юзер хоть заснет на клаве :)

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




Пост N: 1054
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.06.16 21:05. Заголовок: Dima пишет Через Sen..


Dima пишет
 цитата:
Через Sendmessage это можно получить ? ...
ни какой велосипед сочинять не надо


Дима, в чем сомнения ? в подчиненном бровсе переотображать надо (алгоритм делать), а управлять сообщеними (в гуи так принято), например смотри Tsb_Seek2 и on change с postmessage на кл.VK_F20.
у тебя похожая ситуация только по таймеру, т.е. подчиненный бровс знает как отображать, а таимер просто посылает сообщение на переотображение через время и все

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




Пост N: 5826
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.06.16 21:26. Заголовок: SergKis пишет: Дима..


SergKis пишет:

 цитата:
Дима, в чем сомнения ?


Да привык к консоли , вот оно и сказывается.
Мысль понял. Спасибо !

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




Пост N: 5827
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.06.16 10:02. Заголовок: Хотел положить тень ..


Хотел положить тень на все окно а после .... ее убрать.
Есть ли пример ?

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




Пост N: 1055
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.06.16 10:26. Заголовок: Dima пишет Хотел пол..


Dima пишет
 цитата:
Хотел положить тень на все окно а после .... ее убрать.


"моя твоя не понимай", что хочешь
1. цвет в окне на серый
2. не активное окно
3. контролы disable
???

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




Пост N: 5828
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.06.16 10:31. Заголовок: SergKis пишет: 1. ц..


SergKis пишет:

 цитата:
1. цвет в окне на серый


вот так

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




Пост N: 5829
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.06.16 10:41. Заголовок: я бы даже сказал зат..


я бы даже сказал затемнение как на скрине
http://3.bp.blogspot.com/-rQQn7_ClLss/VMKu_Hu01AI/AAAAAAAAE-o/CBTnCLAo8f0/s1600/ishop_.png

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




Пост N: 1056
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.06.16 10:45. Заголовок: Dima а это пробовал..


Dima
а это пробовал (по chm) ?
<WindowName>.BackColor := aBackColor
SetProperty(cFrm, "BackColor", aBackColor)

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




Пост N: 1057
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.06.16 10:50. Заголовок: Dima пишет я бы даже..


Dima пишет
 цитата:
я бы даже сказал затемнение как на скрине


там не активное основное окно, поверх лежит модал окно NOSIZE NOMINIMIZE NOMAXMIZE

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




Пост N: 1058
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.06.16 11:00. Заголовок: PS точнее с MODAL ..


PS
точнее с
MODAL
[ NOSIZE ]
[ NOSYSMENU ]
[ NOCAPTION ]
со своим X и астион выхода

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




Пост N: 5830
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.06.16 11:10. Заголовок: SergKis пишет: SetP..


SergKis пишет:

 цитата:
SetProperty(cFrm, "BackColor", aBackColor)


Счас пробну.


Это не то.

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




Пост N: 5831
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.06.16 11:20. Заголовок: SergKis пишет: там..


SergKis пишет:

 цитата:

там не активное основное окно, поверх лежит модал окно NOSIZE NOMINIMIZE NOMAXMIZE


Все верно и оно затемнено (основное) , вот так и мне надо бы.
Или как тут http://windowstips.ru/notes/4507 но затемнить нужно конкретное окно

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




Пост N: 1059
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.06.16 11:36. Заголовок: Dima для начала кла..


Dima
для начала клади модал окно поверх, отладив, занимайся сменой цветов в основном

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




Пост N: 5832
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.06.16 11:48. Заголовок: SergKis пишет: для ..


SergKis пишет:

 цитата:
для начала клади модал окно поверх


положил , но окно (не главное) из которого его вызвал хотел затемнить , вот и все.
могу сделать его прозрачным , но это не то , нужно затемнение.

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




Пост N: 1060
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.06.16 11:58. Заголовок: Dima пишет нужно зат..


Dima пишет
 цитата:
нужно затемнение.


таких алгоритмов в минигуи не видел

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




Пост N: 5833
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.06.16 12:25. Заголовок: SergKis пишет: аких..


SergKis пишет:

 цитата:
аких алгоритмов в минигуи не видел


есть не что похожее
C:\MiniGUI\SAMPLES\Advanced\BosTaurus\Demo5
При запуске сразу идем в меню и давим любой пункт , вылазит MsgInfo а окно за ним становится серым.
Попробовал переделать Grayness_effect_start и Grayness_effect_end подавая на вход
имя своего окна , не пашет однако.

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




Пост N: 1023
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 30.06.16 12:55. Заголовок: Это не то. Пример за..


Это не то. Пример затемняет только фон окна. все контролы на окне остаются как были.
Попробуй пробежаться по свойсьву BackColor окна и ВСЕХ его контролов.

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




Пост N: 957
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.06.16 14:08. Заголовок: Haz пишет: Попробуй..


Haz пишет:

 цитата:
Попробуй пробежаться по свойству BackColor окна и ВСЕХ его контролов.


Эти две фукции могут в этом деле помочь

/******************************************************************************/ 
Procedure ChangeAllBackcolor
/******************************************************************************/
LOCAL i, nFormCount := Len( _HMG_aFormNames )
LOCAL nI, cCtrlName, cFormName
LOCAL aCtrls

FOR i := 1 TO nFormCount
cFormName := _HMG_aFormNames [ i ]
IF _IsWindowDefined ( cFormName )
SetProperty( cFormName, "BACKCOLOR", GRAY )
aCtrls := _GetArrayOfAllControlsForForm( cFormName )
FOR nI := 1 TO Len( aCtrls )
cCtrlName := aCTrls[ nI ]
SetProperty( cFormName, cCtrlName, "BACKCOLOR", GRAY )
SetProperty( cFormName, cCtrlName, "FONTCOLOR", WHITE )
NEXT
ENDIF
NEXT

Return


/******************************************************************************/
FUNCTION _GetArrayOfAllControlsForForm ( cFormName )
/******************************************************************************/
LOCAL nFormHandle, i, nControlCount, aRetVal := {}, x

nFormHandle := GetFormHandle ( cFormName )
nControlCount := Len ( _HMG_aControlHandles )
FOR i := 1 TO nControlCount
IF _HMG_aControlParentHandles[ i ] == nFormHandle
IF ValType( _HMG_aControlHandles[ i ] ) == 'N'
IF ! Empty( _HMG_aControlNames[ i ] )
IF AScan( aRetVal, _HMG_aControlNames[ i ] ) == 0
AAdd( aRetVal, _HMG_aControlNames[ i ] )
ENDIF
ENDIF
ELSEIF ValType( _HMG_aControlHandles[i ] ) == 'A'
FOR x := 1 TO Len ( _HMG_aControlHandles[ i ] )
IF !Empty( _HMG_aControlNames[ i ] )
IF AScan( aRetVal, _HMG_aControlNames[ i ] ) == 0
AAdd( aRetVal, _HMG_aControlNames[ i ] )
ENDIF
ENDIF
NEXT x
ENDIF
ENDIF
NEXT i

RETURN ASort( aRetVal )


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




Пост N: 1061
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.06.16 14:24. Заголовок: Haz пишет Попробуй п..


Haz пишет
 цитата:
Попробуй пробежаться по свойсьву BackColor окна и ВСЕХ его контролов.


тогда контролам и disable добавить можо

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




Пост N: 1024
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 30.06.16 14:28. Заголовок: SergKis пишет: тогд..


SergKis пишет:

 цитата:
тогда контролам и disable добавить можо


да, вполне логично это сделать

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




Пост N: 4987
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.06.16 18:02. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Эти две фукции могут в этом деле помочь



Не совсем понятно....
Имею кнопку на форме, при нажатии должны: затемнить текущая форма + вызов новой формы, после закрытия новой формы нужно разтемнить текущую форму.

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




Пост N: 1062
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.06.16 18:57. Заголовок: Andrey пишет Не совс..


Andrey пишет
 цитата:
Не совсем понятно....


добавь
local b, f, aClrOld := {}
...
cCtrlName := aCTrls[ nI ]
b := GetProperty( cFormName, cCtrlName, "BACKCOLOR" )
f := GetProperty( cFormName, cCtrlName, "FONTCOLOR" )
aAdd(aClrOld, {cFormName, cCtrlName, b, f})
SetProperty( cFormName, cCtrlName, "BACKCOLOR", GRAY )
SetProperty( cFormName, cCtrlName, "FONTCOLOR", WHITE )
...
Return aClrOld
на вызове новой формы или на нажатии темнишь и получаешь старые значения
на release новой возвращаешь старые значения на форму - разтемняешь


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




Пост N: 4988
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.06.16 20:51. Заголовок: У Дмитрия красивое з..


У Дмитрия красивое затенение окна.

Примерно так хочется - кнопка BUTTONEX Button_Test с обработкой:
ACTION {|| aObj := ChangeAllBackcolor(ThisWindow.Name) ,;
MsgDebug("Test Change All Backcolor Form") ,;
ChangeAllBackRestore(aObj,ThisWindow.Name) }


Фон менять нужно у всех объектов, включая TsBrowse ....
С картинкой только это не выйдет, я имею ввиду PNG со свойством TRANSPARENT BACKGROUNDCOLOR aBackColor ....


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




Пост N: 5834
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.07.16 12:43. Заголовок: При нажатии кнопки н..


При нажатии кнопки на форме , каким образом запомнить фон цвета не активного курсора бровса ,
сменить его и затем снова восстановить.
Объясню зачем.
Кнопка на форме скипает бровс.
У нее такая процедура ACTION {|| tmpbrw:GoDown(),tmpbrw:SetFocus() }
При нажатии на нее бровс теряет фокус ввода и затем снова его получает , в результате
имеем на бровсе "подмигивание" курсора.

Попробовал в кнопке
ON GOTFOCUS {|| tmpbrw:setcolor({12},{Rgb( 198, 226, 255 ), Rgb( 159, 207, 255 )})}
Но тогда при наведении на кнопку , дергается весь бровс

Проехали

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


Пост N: 596
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 07.07.16 09:49. Заголовок: У разных языков раз..


У разных языков разные реализации.
У Делфи у формы есть свойство AlphaBlend (и параметр) - устанавливает прозрачность.
А дальше все просто - надо затенить основную форму - поверх ее (а можно и на весь Экран) открываешь вторую с нужной прозрачность и оттенком.
На Основной ничего делать с контролами не надо.Кстати, так и Локеры пишутся

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




Пост N: 1026
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 07.07.16 23:12. Заголовок: Влад, идея понятна. ..


Влад, идея понятна. Думаю будет работать.
Спасибо

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




Пост N: 5851
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.07.16 08:11. Заголовок: Как узнать что кнопк..


Как узнать что кнопка имеет фокус ввода ?

PS
Проехали сделал через переменную

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




Пост N: 1067
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.07.16 15:02. Заголовок: Dima пишет:Как узнат..


Dima пишет:
 цитата:
Как узнать что кнопка имеет фокус ввода ?


 
IF ( nI := ascan(_HMG_aControlHandle, GetFocus()) ) > 0 // фокус на контроле МиниГуи
IF _HMG_aControlType [ nI ] == "BUTTON" .and. _HMG_aControlNames [ nI ] == ButtonName // нужный button (или другой контрол) нашли и он в фокусе
...
ENDIF
ENDIF


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




Пост N: 5852
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.07.16 15:32. Заголовок: SergKis Спасибо !..


SergKis
Спасибо
Это я так понял для всех окон а если для конкретного окна , то как ?

И еще вопрос: как узнать установлен ли конкретный шрифт в системе ?

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




Пост N: 1068
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.07.16 17:10. Заголовок: Dima GetFocus() дае..


Dima
GetFocus() дает handle контрола в фокусе (окно тоже)
 
ParentFormHandle :=_HMG_aControlParenthandles [ nI ]
If ( nK := ascan(_HMG_aFormHandles, ParentFormHandle) ) > 0
cFormName := _HMG_aFormNames[ nK ]
EndIf


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




Пост N: 1069
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.07.16 17:15. Заголовок: Dima пишет как узна..


Dima пишет
 цитата:
как узнать установлен ли конкретный шрифт в системе ?


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

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




Пост N: 1070
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.07.16 17:20. Заголовок: Dima пишет Это я так..


Dima пишет
 цитата:
Это я так понял для всех окон а если для конкретного окна , то как ?


не очень понимаю к чему клонишь ?
 
If GetControlHandle(cControlName, cForm) == GetFocus()
// нужный конрол нужного окна в фокусе
EndIf



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




Пост N: 5853
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.07.16 21:44. Заголовок: SergKis пишет: где ..


SergKis пишет:

 цитата:
где то уже было, Андрей выяснял, если не ошибаюсь


Да он выяснял , загружен ли фонт в программе .
Ответ был таков GetFontHandle( Font_1 ) если вернуло 0 , не загружен.
А вопрос был а доступен ли фонт в системе. В семерке скажем есть фонты которых нет в XP а
я формирую Excel отчет и там хочу установить нужный фонт с проверкой конечно.
Похожую функцию нашел GetFont() , но она и диалоговое окно вешает а оно мне не нужно.
Мне бы просто массив имен фонтов

Насчет фокуса контрола вроде понял , тяжко дается после консоли все это

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




Пост N: 1071
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.07.16 23:29. Заголовок: Dima пишет тяжко да..


Dima пишет
 цитата:
тяжко дается после консоли все это


Главное помни, что на событиях окон, контролов (в блоках кода) всегда есть переменные
_HMG_ThisFormIndex
_HMG_ThisEventType
_HMG_ThisType
_HMG_ThisIndex
_HMG_ThisFormName
_HMG_ThisControlName
от них плясать надо в блоках кода. _HMG_ThisType := W-window\C-control
а GetFocus(), как правило нужно в процедурах типа TIMER
если в GetBox использовать ACTION, ACTION2 и при клике на буттоны соответствующие, в вызовах GetFocus() даст handle нажатого button (он отсутствует в регистации контрлов МиниГуи), а _HMG_ThisControlName даст имя GetBox, к которому бутонны относятся. Через _HMG_ThisIndex можно достать из переменных _HMG_... все о контроле, а через _HMG_ThisFormIndex можно достать из переменных _HMG_... все о форме на котором контрол.


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




Пост N: 5857
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.07.16 13:17. Заголовок: Vlad04 пишет: А дал..


Vlad04 пишет:

 цитата:
А дальше все просто - надо затенить основную форму - поверх ее (а можно и на весь Экран) открываешь вторую с нужной прозрачность


Сделал , прикольно получилось !

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




Пост N: 5858
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.07.16 13:34. Заголовок: http://f3.s.qip.ru/g..




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


Пост N: 597
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 10.07.16 14:00. Заголовок: Dima пишет: цитата..



 цитата:

Dima пишет:
цитата:
Как узнать что кнопка имеет фокус ввода ?


Можно в некоторых случаях так, к примеру:

 цитата:


if This.FocusedControl == "Text_New"

.....
endif




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




Пост N: 5859
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.07.16 14:14. Заголовок: Vlad04 И так сработ..


Vlad04
И так сработает ?
 
if GetProperty( "Form_0", "FocusedControl" )=="Text_New"
....
endif


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


Пост N: 598
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 10.07.16 15:03. Заголовок: Dima И так сработае..


Dima

 цитата:
И так сработает ?



И так сработает !

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




Пост N: 5860
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.07.16 15:10. Заголовок: Vlad04 пишет: И так..


Vlad04 пишет:

 цитата:
И так сработает !


У меня не работает , во всяком случае в GOTFOCUS окна , впрочем как и не пашет установка
фокуса на бровс. При чем это не пашет если окно получает фокус ввода извне (не из моей проги).
Такое поведение только на семерке и XP , выше уже все в порядке.
К примеру из проги сформировал отчет EXCEL и вывел его окно так
ShowWindow(oExcel:hWnd, SW_MAXIMIZE)
BringWindowToTop(oExcel:hWnd)

То после возврата в свою программу все танцы с установкой (проверкой) фокуса не работают в GOTFOCUS окна.
Поэтому пришлось делать через свои переменные.

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




Пост N: 5861
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.07.16 15:33. Заголовок: Как заставить мышку ..


Как заставить мышку ездить только в пределах указанного окна а после определенных
действий вернуть как было ?
Вроде был пример , но пока не вижу.

ЗЫ
Идея вроде ясна , на ON MOUSEMOVE окна вешаем процедуру которая снимает координаты мыши (GETCURSORPOS()) ,
затем сверяем координаты с координатами окна и если нужно ставим курсор мыши куда нужно
с помощью SetcursorPos()

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




Пост N: 961
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.07.16 15:36. Заголовок: Dima пишет: Мне бы ..


Dima пишет:

 цитата:
Мне бы просто массив имен фонтов


Посмотри функцию rr_GetFontNames() из сырцов библиотеки HbPrinter

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




Пост N: 5862
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.07.16 15:40. Заголовок: gfilatov2002 То что..


gfilatov2002
То что надо

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


Пост N: 599
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 11.07.16 11:17. Заголовок: Dima Не клацайте на..


Dima

 цитата:
Не клацайте на форме Excel



Желательно, до окончания формирования отчета , Excel не показывать.
Для больших отчетов существенное ускорение.

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




Пост N: 5865
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.07.16 12:12. Заголовок: Vlad04 пишет: Желат..


Vlad04 пишет:

 цитата:
Желательно, до окончания формирования отчета , Excel не показывать.


Да я знаю , так и делал.
Сам отчет не очень большой да и юзеры захотели "мультов"

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




Пост N: 5869
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.07.16 21:51. Заголовок: Вертикальный скролл ..


Вертикальный скролл вообще отрубается в TS ?
Установка obrw:lNoVScroll := TRUE ему до лампочки

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




Пост N: 5870
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.07.16 22:11. Заголовок: И еще наверное косяк..


И еще наверное косяк
В бровсе 2 колонки
Есть установки
obrw:nfreeze:=2
obrw:lLockFreeze:=FALSE
Так вот если вертикального скрола нет (база не большая) то я могу входит в режим редактирования двойным кликом
мышки , если этот скрол есть то не могу , хотя VK_RETURN пускает в обоих случаях в режим редактирования.


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




Пост N: 1027
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 13.07.16 23:23. Заголовок: Dima пишет: Установ..


Dima пишет:

 цитата:
Установка obrw:lNoVScroll := TRUE ему до лампочки



Перед LoadFields() или Перед ::SetArray() те до того как определены данные для бровса

oBrw:lNoVScroll := TRUE
oBrw:oVScroll := NIL

ЗЫ Все в исходниках
Это как в поговорке - "Моется тот кому лень чесаться"


 цитата:
Тоже с этим замучился.


так и мучается тот кому лень читать



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




Пост N: 5003
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.07.16 23:23. Заголовок: Dima пишет: Вертика..


Dima пишет:

 цитата:
Вертикальный скролл вообще отрубается в TS ?
Установка obrw:lNoVScroll := TRUE ему до лампочки



Ага, подтверждаю !
Тоже с этим замучился.


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




Пост N: 1028
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 13.07.16 23:25. Заголовок: Dima пишет: Так вот..


Dima пишет:

 цитата:
Так вот если вертикального скрола нет (база не большая) то я могу входит в режим редактирования двойным кликом
мышки , если этот скрол есть то не могу , хотя VK_RETURN пускает в обоих случаях в режим редактирования.


с этим не сталкивался , в сырцах вроде нет зависимости редакции от скрола

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




Пост N: 5871
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.07.16 08:28. Заголовок: Haz пишет: Перед Lo..


Haz пишет:

 цитата:
Перед LoadFields() или Перед ::SetArray() те до того как определены данные для бровса

oBrw:lNoVScroll := TRUE
oBrw:oVScroll := NIL


Не работает однако.
Скрол по прежнему рисуется , но при движении по бровсу у него реакции нет (стоит на месте)
Нажимаем мышкой но скроле которого не должно быть и получаем ошибку
Called from GETPOS(0)
Called from TSBROWSE:VSCROLL(12209)
Called from TSBROWSE:HANDLEEVENT(7340)
Called from EVENTS(0)

Вообще я смотрел по началу примеры , прежде чем спросить и один из них твой Tsb_cursor
и там была тщетная попытка выключить вертикальный скрол , не до :SetArray а после.

И еще непонятка (думал решили) , каким образом горизонтальный скролл влияет на nAdjColumn ,
если этот скролл есть nAdjColumn работает правильно , если скрола нет то он не работает.
Не должно быть между ними ни какой связи , но получается что nAdjColumn зависим от г. скрола.


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




Пост N: 1029
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 14.07.16 09:04. Заголовок: Dima пишет: Не рабо..


Dima пишет:

 цитата:
Не работает однако


работает
с работы скину рабочий пример

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




Пост N: 5872
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.07.16 09:27. Заголовок: Haz пишет: с работы..


Haz пишет:

 цитата:
с работы скину рабочий пример


OK
Тут дело такое или его отключить что не вышло или его починить что бы не глючил с базой ADS
Глюк выглядит так (если потаскать за верт. скролл)



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




Пост N: 1030
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 14.07.16 10:52. Заголовок: Haz пишет: работает..


Haz пишет:

 цитата:
работает
с работы скину рабочий пример


Найди вертикальный скрол
Записей в бровсе 1000
http://shot.qip.ru/00Qz9C-610KPoqqQy/

кусок кода из Tsb_Cursor
 
DEFINE TBROWSE oBrw AT 17, 0 ;
OF Form_0 ;
WIDTH Form_0.WIDTH - 2 * GetBorderWidth() ;
HEIGHT Form_0.HEIGHT - GetTitleHeight() - GetTitleHeight() - ;
GetProperty( "Form_0", "StatusBar", "Height" ) - 2 * GetBorderHeight() ;
GRID ;
SELECTOR TRUE;
FONT "Arial" SIZE 12

oBrw:lNoVScroll := TRUE
oBrw:oVScroll := NIL

oBrw:SetArray( aDatos, .T. )



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




Пост N: 5873
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.07.16 11:28. Заголовок: Haz пишет: Найди ве..


Haz пишет:

 цитата:
Найди вертикальный скрол


Попробуй его не найти если бровс по базе
На массиве он да убивается.

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




Пост N: 1031
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 14.07.16 12:14. Заголовок: Dima пишет: Попробу..


Dima пишет:

 цитата:
Попробуй его не найти если бровс по базе


попробовал
oBrw:bChange := {|| oBrw:oVScroll:SetRange( 0, 0 ) }
не нашел

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




Пост N: 5874
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.07.16 14:11. Заголовок: Haz пишет: oBrw:bCh..


Haz пишет:

 цитата:
oBrw:bChange := {|| oBrw:oVScroll:SetRange( 0, 0 ) }


Точно , ты писал в феврале про это тут http://clipper.borda.ru/?1-1-0-00000457-000-10001-0-1467579659

Странно что Андрей мучался

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




Пост N: 5875
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.07.16 21:46. Заголовок: TS бровс , футер име..


TS бровс , футер имеет 5 строк.
Хотелось бы его раскрасить нежным цветом по условию , но он ловит только то что ему покормили в :cFooting.
К базе он не привязан , пока не представляю как это сделать.
Есть у кого идеи как это сделать в Setcolor ({ 9 ,10}.....)?

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




Пост N: 1032
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 14.07.16 23:11. Заголовок: Dima пишет: Есть у ..


Dima пишет:

 цитата:
Есть у кого идеи как это сделать в Setcolor ({ 9 ,10}.....)?


как и ячейки не катит ? т.е. вместо массива цветов - блок кода который по условию дает нужный массив

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




Пост N: 1072
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.07.16 23:48. Заголовок: Dima пишет: Есть у к..


Dima пишет:
 цитата:
Есть у кого идеи как это сделать в Setcolor ({ 9 ,10}.....)?


 
For i := 1 To len(oBrw:aColumns)
oCol := oBrw:aColumns[ i ]
oCol::nClrFootBack := {|nCol,oBr| MyFootBack(nCol, oBr) }
oCol::nClrFootFore := {|nCol,oBr| MyFootFore(nCol, oBr) }
Next
...
Static Function MyFootBack( nCol, oBrw )
Local oCol := oBrw:nCol, nClr := CLR_YELLOW // или RGB( 255, 255, 0 )
If oCol:cName == "ID"
nClr := CLR_RED
ElseIf oCol:cName == "NAME"
nClr := CLR_HMAGENTA
...
EndIf

Return nClr

Static Function MyFootFore( nCol, oBrw )
Local oCol := oBrw:nCol, nClr := CLR_YELLOW // или RGB( 255, 255, 0 )
If oCol:cName == "ID"
nClr := CLR_HBLUE
ElseIf oCol:cName == "NAME"
nClr := CLR_BLACK
...
EndIf

Return nClr

как то так

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




Пост N: 1073
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.07.16 23:53. Заголовок: PS вместо Local oCol..


PS
вместо
Local oCol := oBrw:nCol
надо
Local oCol := oBrw:aColumns[nCol]

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




Пост N: 1074
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 00:35. Заголовок: PS 2 для градиентной..


PS 2
для градиентной заливки возвращать можно
nClr := { CLR_..., CLR_...} или блоки кода
nClr := { {|nCol,oBr| RGB(...)}, {|nCol,oBr| RGB(...)} }

для хранения цветов и др. инф. для работы с блоками колонок хорошо исп. oCol:Cargo
oBrw:GetColumn("ID"):Cargo := { CLR_YELOW, CLR_BLUE, CLR_GREEN,...}
и в функциях значения брать из oCol:Cargo

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




Пост N: 5876
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.07.16 08:29. Заголовок: SergKis Haz Я навер..


SergKis Haz
Я наверное не корректно поставил вопрос
Говорю о раскраске псевдо строк футера , ведь по определению он однострочный.
Но добавив нужное кол-во CRLF можно сделать вид что он многострочный.
То что можно столбцы по условию покрасить это понятно.
Вот такой футер к примеру


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




Пост N: 1075
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 08:58. Заголовок: Dima Раскрасить мож..


Dima
Раскрасить можно ВСЕ строки футера в один цвет. для разноцветных строк можно пробнуть другой
Tsb без header, footer, связав его с размерами и событиями изм. размеров. Если правильно прнял твою хотелку

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




Пост N: 5877
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.07.16 09:11. Заголовок: SergKis Понял...


SergKis
Понял.

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




Пост N: 1076
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 09:24. Заголовок: Dima Возможно проще..


Dima
Возможно проще сделать по клику на футер (с сокращенным кол-вом строк) на раскрытие др. Tsb расшифровки этих данных,
т.к. упр. футером на Tsb с 2мя HScroll-ами и изм. рамеров может оказаться затрудненным

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




Пост N: 5878
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.07.16 09:27. Заголовок: SergKis Кстати да в..


SergKis
Кстати да вариант , по клику или наведению на него мыши , хотя с наведением наверное не получится , TS не умеет такого.

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




Пост N: 1077
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 10:02. Заголовок: Dima Можно еще проб..


Dima
Можно еще пробнуть Label-на футоре, с цветами и при oBrw:DrawFooter() перепоказывать их, но ... это пробовать
(как бы label под футером tsb не оказался)


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




Пост N: 1078
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 10:06. Заголовок: Dima пишет хотя с на..


Dima пишет
 цитата:
хотя с наведением наверное не получится , TS не умеет такого.


см. блок кода на ToolTip (мышой на футер) - может что получится

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




Пост N: 5879
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.07.16 10:21. Заголовок: SergKis пишет: см. ..


SergKis пишет:

 цитата:
см. блок кода на ToolTip


Ты наверное про cToolTip
Он ведь долго не живет , показался на время и пропал

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




Пост N: 1079
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 10:34. Заголовок: Dima Да. Но провери..


Dima
Да. Но проверить, что нет контрола\окна можно и при отсутсвии послать сообщение, к примеру, на FK_F25 вполне можно

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




Пост N: 1080
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 10:38. Заголовок: Dima пишет Он ведь д..


Dima пишет
 цитата:
Он ведь долго не живет , показался на время и пропал


Если расшифровку делать через сам cToolTip, то надо сообщение сделать много строчным и установить (вроде должно ставиться) время сообщения больше, потом вернуть

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




Пост N: 5880
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.07.16 12:09. Заголовок: а при наведении могу..


а при наведении могу показать какое то свое окно вместо Tooltip ?
например окно а в нем бровс , если мышка скажем уезжает за пределы этого окна
то окно закрывается.

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




Пост N: 1081
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 12:26. Заголовок: Dima пишет а при нав..


Dima пишет
 цитата:
а при наведении могу показать какое то свое окно вместо Tooltip ?
например окно а в нем бровс


делай окно без заголовка, кнопочек, сисменю (без всего) с Tsb, ставь на него фокус, при потере фокуса окном, убиваешь его, передавая фокус где был

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




Пост N: 5881
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.07.16 12:41. Заголовок: что бы окно фокус по..


что бы окно фокус потеряло нужно где то мышкой клацнуть
а надо что бы окно закрывалось если курсор мышки выехал за координаты этого временного окна.
наверное это можно сделать в MOUSEMOVE() TS или в ON MOUSEMOVE окна

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




Пост N: 1082
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 13:00. Заголовок: Это все можно, вопро..


Это все можно, вопрос случайного выезда мыши за окно (задели мышу, задели случайно поверхность мышинную) - это может раздражать

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




Пост N: 5882
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.07.16 13:06. Заголовок: ну не знаю , меня не..


ну не знаю , меня не раздражает к примеру как это сделано в C:\MiniGUI\SAMPLES\BASIC\Mouse_Coords\demo4.exe

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




Пост N: 1083
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.07.16 15:00. Заголовок: Dima тогда вперед ..


Dima
тогда вперед
меня раздражает без клацанья (скачет что не попадя, а я не просил)

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




Пост N: 6581
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.09.17 16:48. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Посмотри функцию rr_GetFontNames() из сырцов библиотеки HbPrinter


А еще есть WIN_ENUMFONTFAMILIES()


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





Пост N: 50
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 13.12.17 13:03. Заголовок: Непонятная ошибка ....?


При выполнение простой функции -

DEFINE TAB Tab_3 PARENT Form_6 ...
PAGE ' СВРА '
@ 130,500 CHECKBOX CheckBox_4 PARENT Form_6 .....
.....
Form_6.CheckBox_4.Enable := .f.


вылетает ошибка в сырцах ... как это можно обойти ...?

Application: C:\MiniGUI\SAMPLES\MY_BASIC\NAMOTKA\rekl_nam.exe
Date: 11.12.2017 Time: 11:16:19
Time from start: 0 days 0 hours 0 mins 6 secs
Error BASE/1132 Переполнение массива: Неверное количество аргументов

Called from EVENTS(266) in module: h_events.prg
Called from DISABLEWINDOW(0)
Called from _DISABLECONTROL(1223) in module: h_controlmisc.prg
Called from SETPROPERTY(3740) in module: h_controlmisc.prg
Called from VIBOR_4(123) in module: rekl_nam.prg
Called from (b)VIBOR(45) in module: rekl_nam.prg
Called from _DOCONTROLEVENTPROCEDURE(1794) in module: h_windows.prg
Called from EVENTS(1733) in module: h_events.prg
Called from DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(1448) in module: h_windows.prg
Called from VIBOR(54) in module: rekl_nam.prg
Called from (b)MAIN(270) in module: rekl_nam.prg
Called from _DOCONTROLEVENTPROCEDURE(1794) in module: h_windows.prg
Called from EVENTS(1733) in module: h_events.prg
Called from DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(1448) in module: h_windows.prg
Called from MAIN(319) in module: rekl_nam.prg

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


Пост N: 743
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 13.12.17 14:48. Заголовок: Сложно сказать. Пров..


Сложно сказать. Проверь - объявлена ли форма 6 в модуле. Попробуй отдельный микропример, который повторяет условия
и т.п

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




Пост N: 1202
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.12.17 14:50. Заголовок: Alex_Cher пишет: вы..


Alex_Cher пишет:

 цитата:
вылетает ошибка в сырцах


Ищите ошибку у себя в коде либо подготовьте небольшой пример, который демонстрирует проблему.

Мой тестовый пример отработал нормально
#include "minigui.ch" 

Function Main

DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 640 HEIGHT 480 ;
TITLE 'Harbour MiniGUI Demo' ;
MAIN ;
ON SIZE SizeTest()
/*
DEFINE MAIN MENU
DEFINE POPUP 'Test'
MENUITEM 'Disable Page 1' ACTION DisableTab( 'Tab_1', 'Form_1', 1 )
MENUITEM 'Enable Page 1' ACTION EnableTab( 'Tab_1', 'Form_1', 1 )
SEPARATOR
MENUITEM 'Disable Page 2' ACTION DisableTab( 'Tab_1', 'Form_1', 2 )
MENUITEM 'Enable Page 2' ACTION EnableTab( 'Tab_1', 'Form_1', 2 )
SEPARATOR
MENUITEM 'Disable Page 3' ACTION DisableTab( 'Tab_1', 'Form_1', 3 )
MENUITEM 'Enable Page 3' ACTION EnableTab( 'Tab_1', 'Form_1', 3 )
SEPARATOR
MENUITEM "E&xit" ACTION Form_1.Release()
END POPUP
END MENU
*/
DEFINE TAB Tab_1 ;
AT 10,10 ;
WIDTH 600 ;
HEIGHT 400 ;
VALUE 1 ;
TOOLTIP 'Tab Control'

PAGE 'Page &1'

@ 60,20 textbox txt_1 value '1-Uno'
@ 90,20 textbox txt_2 value '2-Dos'
@ 120,20 textbox txt_3 value '3-Tres'

END PAGE

PAGE 'Page &2'

@ 60,60 textbox txt_a value 'A-Uno'
@ 90,60 textbox txt_b value 'B-Dos'

@ 120,60 COMBOBOX combo_1 ITEMS {'1-Uno','2-Dos','3-Tres'} VALUE 1

END PAGE

PAGE 'Page &3'

@ 60,100 textbox txt_c value 'C-Uno'
@ 90,100 textbox txt_d value 'D-Dos'

// @ 120,100 SPINNER spinner_1 RANGE 0,10 VALUE 5

Define CheckBox CheckBox_4
Row 120
Col 100
Value .F.
Caption 'Simple CheckBox'
Width 120
PARENT Form_1
End CheckBox

@ 150,100 FRAME Frame_2 WIDTH 120 HEIGHT 110 CAPTION "Page 3"

DEFINE RADIOGROUP R1
ROW 170
COL 120
OPTIONS { 'Uno','Dos','Tres' }
VALUE 1
WIDTH 80
END RADIOGROUP

END PAGE

END TAB

END WINDOW

Form_1.CheckBox_4.Enabled := .f.

// DisableTab( 'Tab_1', 'Form_1', 2 )

Form_1.Center

Form_1.Activate

Return Nil


Procedure SizeTest()

Form_1.Tab_1.Width := Form_1.Width - 40
Form_1.Tab_1.Height := Form_1.Height - 80

Return


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

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