On-line: Aleksandr_D, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
Vlad04
постоянный участник


Пост N: 420
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 19.12.13 18:16. Заголовок: TsBrowse в Минигуи


TsBrows определяется в виде строки ПАРМЕТРОВ объекта и их значений
К примеру

 цитата:

DEFINE TBROWSE oBrw2 ;
AT 60,450 ;
ALIAS cAlias ;
OF Form1 ;
WIDTH 330 ;
HEIGHT 340 ;
FONT "Verdana" ;
SIZE 9 ;
ON DBLCLICK CopyRec();
ON GOTFOCUS fModelo_Hab(2) ;
AUTOFILTER ;
CELLED EDIT;
VALUE nRec;
GRID


Здесь я собрал параметры из разных tBrows
Можно или нет и какие парметры заменить
выражением ( и каким) ?
oBrw2:....
oBrw2:....



Спасибо: 0 
Профиль
Ответов - 301 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]


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




Пост N: 3202
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.01.14 16:11. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
По-видимому, как то так


Спасибо БОЛЬШОЕ !

А как еще сделать ввод (буквенный) в поле поиска (Search for:) но чтобы фокус оставался на маркере TBROWSE ?




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



Пост N: 42
Зарегистрирован: 07.06.08
ссылка на сообщение  Отправлено: 31.01.14 09:46. Заголовок: Делаете обработку вв..


Делаете обработку ввода буковок в TBROWSE и пишете их из программы в поле вода:

&cBrw:bKeyDown := { | nKey | MyKeyAction(nKey), lOk := nKey != VK_ESCAPE }

STATIC FUNCTION MyKeyAction(l_Key)
DO CASE
CASE l_key==VK_BACK.or.l_key>31.and.l_key<242
if l_key==VK_BACK
if len(Form_0.Text_1.Value)>0
Form_0.Text_1.Value:=left(Form_0.Text_1.Value,len(Form_0.Text_1.Value)-1)
endif
else
if ( (l_key > 32 .AND. l_key < 254))
l_key := ASC(LatRus( CHR(l_key) ))
Form_0.Text_1.Value := Form_0.Text_1.Value+chr(l_key)
endif
endif
ENDCASE
SetFilterToDb()
oBrw_1:Refresh()
oBrw_1:Upstable()
Return Nil


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




Пост N: 3220
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.01.14 12:50. Заголовок: a_sidorov пишет: Де..


a_sidorov пишет:

 цитата:
Делаете обработку ввода буковок в TBROWSE и пишете их из программы в поле вода:


То что надо ! Спасибо большое !

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


Пост N: 152
Зарегистрирован: 29.05.10
ссылка на сообщение  Отправлено: 31.01.14 14:07. Заголовок: Andrey пишет: Делае..


Andrey пишет:

 цитата:
Делаете обработку ввода буковок


Тогда к этому еще что-то типа -

case l_key=8//Backspace
If Len(Form_0.Text_1.Value)>=1
Form_0.Text_1.Value:=Left(Form_0.Text_1.Value,Len(Form_0.Text_1.Value)-1)
Endif


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




Пост N: 129
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 31.01.14 15:48. Заголовок: похоже на "велосипед"


обработка буковок уже есть в методе ::Seek( nKey ) класса TBrowse
остается только через определение своего блока bSeekChange присваивать что-то типа этого Form_0.Text_1.Value:= oBrw:cSeek

все лично проверено давно и работает, но есть парочка "НО"
1) должен быть индекс по полю по которому на буковки надо реагировать
2) не помню точно, но вроде в исходнике ::cSeek всегда в верхнем регистре и лечится убиранием UPPER(

ЗЫ: могу поискать пример - когдато делал нечто похожее на комбо в TBrowse но по базе ис использованием подчиненного Tbrowse. назначал и буфер Get объекта



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




Пост N: 3221
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.01.14 16:05. Заголовок: Haz пишет: ЗЫ: могу..


Haz пишет:

 цитата:
ЗЫ: могу поискать пример - когдато делал нечто похожее на комбо в TBrowse но по базе ис использованием подчиненного Tbrowse. назначал и буфер Get объекта


Пример в студию !

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




Пост N: 130
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 31.01.14 16:24. Заголовок: Andrey пишет: Приме..


Andrey пишет:

 цитата:
Пример в студию !



поищу, завтра выложу

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




Пост N: 132
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 03.02.14 12:29. Заголовок: Haz пишет: Пример в..


Haz пишет:

 цитата:
Пример в студию !



Поискал в архивах и собрал рабочий пример. Красоту не наводил.
Суть примера :
1)в базе хранится ID, а в TBrowse показываем строку из справочника по этому ID
2)в поле редактирования Tbrowse создается объект TBtnGet , через который лезем в справочник (тоже TBrowse)
3)при выборе из справочника стандартный метод ::Seek(nKey) обрабатывает клавиши , а блок bSeekChange - пишет то что набираем ( если найдено) в буфер Get объекта.



https://drive.google.com/file/d/0BxsLjKW148EQbzZhWkJMOHNKTkk/edit?usp=sharingk/edit?usp=sharing

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




Пост N: 3234
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.02.14 02:38. Заголовок: Как вернуть фокус вв..


Как вернуть фокус ввода обратно в TBROWSE после своей обработки ?

PUBLIC &cBrw

DEFINE TBROWSE &cBrw ;
AT nRow, nCol ;
....
&cBrw:bLDblClick:= { | nRow, nCol, nKeyFlags | MyAction() } // Двойной клик мышки

RETURN Nil
////////////////////////////////////////
FUNCTION MyAction()
LOCAL cText, cPole := ALLTRIM(FIELD->PNAME)

IF AT("[",cPole) > 0 // значит это директория
ChangeDirectory(Alltrim(cPole)) // сменить директорию
DIRECTORY->(Dbsetorder(ChoiHeader()-2))
RefreshBrowse()
oBrw_1:Reset()
ELSE
cText := "File: " + ALLTRIM(cPole) + CRLF + CRLF
cText += "Line: " + STR(oBrw_1:nLastPos) + CRLF + CRLF
cText += "Cell: " + STR(oBrw_1:nCell)
MsgInfo(cText)
?????? вот здесь вернуть .Setfocus
ENDIF
Return Nil




Спасибо: 1 
Профиль
serj



Пост N: 11
Зарегистрирован: 05.10.12
ссылка на сообщение  Отправлено: 18.02.14 05:13. Заголовок: Как вернуть фокус вв..



 цитата:
Как вернуть фокус ввода обратно в TBROWSE после своей обработки ?


DoMethod( cForm, oBrw_1, 'setfocus' )
DoMethod( cForm, oBrw_1, 'refresh' )

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




Пост N: 3235
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.02.14 10:24. Заголовок: serj пишет: DoMetho..


serj пишет:

 цитата:
DoMethod( cForm, oBrw_1, 'setfocus' )



Это понятно. Я наверно неправильно поставил вопрос.
Наверно нужно так:
Как получить переменные cForm и oBrw_1 без передачи параметров в функцию MyAction() ?

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




Пост N: 288
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.02.14 11:56. Заголовок: Andrey пишет:Как пол..


Andrey пишет:
 цитата:
Как получить переменные


Func My()
oBrw := &cBrw // ты же делал PUBLIC &cBrw
cForm := oBrw:cParentWnd
cBrwName := oBrw:cControlName
...

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




Пост N: 3236
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.02.14 12:54. Заголовок: Спасибо БОЛЬШОЕ Serg..


Спасибо БОЛЬШОЕ SergKis !

Что-то забывать стал уже пройденные этапы освоения МиниГуи...
Видно, когда урывками осваиваешь, материал плохо усваивается...

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




Пост N: 3237
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.02.14 13:03. Заголовок: SergKis пишет: oBrw..


SergKis пишет:

 цитата:
oBrw := &cBrw // ты же делал PUBLIC &cBrw
cForm := oBrw:cParentWnd



Не работает, вылетает с ошибкой:
Error BASE/1003 Variable does not exist: CBRW
Called from MYACTION(443)
Called from (b)BUTTONFORM0(256)

//////////////////////////////////////////////////////////////////////////////
FUNCTION MyAction()
LOCAL cText, cPole := ALLTRIM(FIELD->PNAME)
LOCAL oBrw := &cBrw // <----- 443 строка
LOCAL cForm := oBrw:cParentWnd
LOCAL cBrwName := oBrw:cControlName


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




Пост N: 133
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 18.02.14 14:28. Заголовок: Andrey пишет: OCAL ..


Andrey пишет:

 цитата:
OCAL oBrw := &cBrw



это не cBrw объявлена как PUBLIC, а та переменная, имя которой в локальной cBrw было на тот момент
при определении бровса было cBrw := "ИМЯ" ( где строка "ИМЯ" из твоего исходника )

тогда и объявлять надо LOCAL oBrw := &"ИМЯ"



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



Пост N: 12
Зарегистрирован: 05.10.12
ссылка на сообщение  Отправлено: 18.02.14 15:30. Заголовок: может так GetPropert..


может так
GetProperty (<cWindowName>[,<cControlName>] ,<cPropertyName>)--> PropertyValue


GetProperty(cForm,'oBrw','width')

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




Пост N: 134
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 18.02.14 15:41. Заголовок: serj пишет: GetProp..


serj пишет:

 цитата:
GetProperty(cForm,'oBrw','width')



по любому чтобы работать с методами объекта , нужно знать этот объект, проще будет не усложнять себе жизнь и передать cBrw параметром - MyAction( cBrw )
где без труда получить сам объект &cBrw и далее дергать его проперти, его методы или выдавать фокус, прятать и.т.д.

А так это похоже на операцию на гландах через (_|_)





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




Пост N: 3238
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.02.14 22:38. Заголовок: Haz пишет: А так эт..


Haz пишет:

 цитата:
А так это похоже на операцию на гландах через (_|_)



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

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




Пост N: 3242
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.02.14 18:18. Заголовок: Haz пишет: цвет скр..


Haz пишет:

 цитата:
цвет скрола определен в :WinNew() как локальные переменные которым назначаются системные значения
nClrText := GetSysColor( COLOR_WINDOW ),;
nClrBack := GetSysColor( COLOR_SCROLLBAR ),;

следовательно без изменения системных значений или изменения метода WinNew() - никак (



Григорий, а можно добавить в библиотеку TsBrowse возможность изменения этих переменных ?
Есть ли у вас возможность связаться с автором этой библиотеки ?
Я понимаю, что можно самому добавить эти переменные и перекомпилировать библиотеку, но хотелось бы иметь эту возможность в стандартной библиотеке.

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




Пост N: 558
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 23.02.14 21:10. Заголовок: Andrey пишет: можно..


Andrey пишет:

 цитата:
можно добавить в библиотеку TsBrowse возможность изменения этих переменных ?


Это только значения по умолчанию для параметров функции WinNew()
Вот полный вызов этой функции со всеми параметрами:

 цитата:
WinNew( nMin, nMax, nPgStep, lVertical, oWnd, bUpAction,;
bDownAction, bPgUp, bPgDown, bPos, nClrText, nClrBack,;
lUpdate, bWhen, bValid )


Если Вы передадите при вызове этой функции свои параметры nClrText, nClrBack, то ...

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