Автор | Сообщение |
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:....
|
|
|
Ответов - 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 пишет: Спасибо БОЛЬШОЕ !
|
|
|
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
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3220
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.01.14 12:50. Заголовок: a_sidorov пишет: Де..
a_sidorov пишет: цитата: | Делаете обработку ввода буковок в TBROWSE и пишете их из программы в поле вода: |
| То что надо ! Спасибо большое !
|
|
|
ММК
|
| постоянный участник
|
Пост 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
|
|
|
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 объекта
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3221
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.01.14 16:05. Заголовок: Haz пишет: ЗЫ: могу..
Haz пишет: цитата: | ЗЫ: могу поискать пример - когдато делал нечто похожее на комбо в TBrowse но по базе ис использованием подчиненного Tbrowse. назначал и буфер Get объекта |
| Пример в студию !
|
|
|
Haz
|
| |
Пост N: 130
Зарегистрирован: 20.02.11
|
|
Отправлено: 31.01.14 16:24. Заголовок: Andrey пишет: Приме..
Andrey пишет: поищу, завтра выложу
|
|
|
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
|
|
|
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
|
|
|
serj
|
| |
Пост N: 11
Зарегистрирован: 05.10.12
|
|
Отправлено: 18.02.14 05:13. Заголовок: Как вернуть фокус вв..
цитата: | Как вернуть фокус ввода обратно в TBROWSE после своей обработки ? |
| DoMethod( cForm, oBrw_1, 'setfocus' ) DoMethod( cForm, oBrw_1, 'refresh' )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3235
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.02.14 10:24. Заголовок: serj пишет: DoMetho..
serj пишет: цитата: | DoMethod( cForm, oBrw_1, 'setfocus' ) |
| Это понятно. Я наверно неправильно поставил вопрос. Наверно нужно так: Как получить переменные cForm и oBrw_1 без передачи параметров в функцию MyAction() ?
|
|
|
|
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 ...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3236
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.02.14 12:54. Заголовок: Спасибо БОЛЬШОЕ Serg..
Спасибо БОЛЬШОЕ SergKis ! Что-то забывать стал уже пройденные этапы освоения МиниГуи... Видно, когда урывками осваиваешь, материал плохо усваивается...
|
|
|
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
|
|
|
Haz
|
| |
Пост N: 133
Зарегистрирован: 20.02.11
|
|
Отправлено: 18.02.14 14:28. Заголовок: Andrey пишет: OCAL ..
Andrey пишет: это не cBrw объявлена как PUBLIC, а та переменная, имя которой в локальной cBrw было на тот момент при определении бровса было cBrw := "ИМЯ" ( где строка "ИМЯ" из твоего исходника ) тогда и объявлять надо LOCAL oBrw := &"ИМЯ"
|
|
|
serj
|
| |
Пост N: 12
Зарегистрирован: 05.10.12
|
|
Отправлено: 18.02.14 15:30. Заголовок: может так GetPropert..
может так GetProperty (<cWindowName>[,<cControlName>] ,<cPropertyName>)--> PropertyValue GetProperty(cForm,'oBrw','width')
|
|
|
Haz
|
| |
Пост N: 134
Зарегистрирован: 20.02.11
|
|
Отправлено: 18.02.14 15:41. Заголовок: serj пишет: GetProp..
serj пишет: цитата: | GetProperty(cForm,'oBrw','width') |
| по любому чтобы работать с методами объекта , нужно знать этот объект, проще будет не усложнять себе жизнь и передать cBrw параметром - MyAction( cBrw ) где без труда получить сам объект &cBrw и далее дергать его проперти, его методы или выдавать фокус, прятать и.т.д. А так это похоже на операцию на гландах через (_|_)
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3238
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.02.14 22:38. Заголовок: Haz пишет: А так эт..
Haz пишет: цитата: | А так это похоже на операцию на гландах через (_|_) |
| Понял, что я совсем заработался или отупел...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3242
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.02.14 18:18. Заголовок: Haz пишет: цвет скр..
Haz пишет: цитата: | цвет скрола определен в :WinNew() как локальные переменные которым назначаются системные значения nClrText := GetSysColor( COLOR_WINDOW ),; nClrBack := GetSysColor( COLOR_SCROLLBAR ),; следовательно без изменения системных значений или изменения метода WinNew() - никак ( |
| Григорий, а можно добавить в библиотеку TsBrowse возможность изменения этих переменных ? Есть ли у вас возможность связаться с автором этой библиотеки ? Я понимаю, что можно самому добавить эти переменные и перекомпилировать библиотеку, но хотелось бы иметь эту возможность в стандартной библиотеке.
|
|
|
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, то ...
|
|
|
Ответов - 301
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|