Автор | Сообщение |
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:....
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
gfilatov2002
|
| moderator
|
Пост N: 924
Зарегистрирован: 11.02.10
|
|
Отправлено: 12.04.16 20:19. Заголовок: SergKis пишет: По м..
SergKis пишет: Огромная благодарность за помощь!
|
|
|
Haz
|
| |
Пост N: 889
Зарегистрирован: 20.02.11
|
|
Отправлено: 13.04.16 11:01. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Нормальненько получилось , в тултип можно добавить еще и номер недели //Find number of week within year FT_WOY( <dDate> ) -> <nResult>
|
|
|
Dima
|
| |
Пост N: 5592
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.04.16 12:07. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Поправил линк на картинку (не видно было)
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4847
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.04.16 19:57. Заголовок: В новой версии 1604 ..
В новой версии 1604 ушёл баг про который писал в Пост N: 4819 и N: 4822 Спасибо !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4849
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.04.16 02:18. Заголовок: Тестирую новую верси..
Тестирую новую версию - попал на БОЛЬШОЙ БАГ ! Проверил старую, там тоже "падает" программа... Что делать, не знаю... Из основного Tsbrowsa (свои переменные STATIC цвета, PUBLIC oBrw и т.д.) вызываю другой Tsbrowse (со своими STATIC, PUBLIC oBrw_5 - переменными). У основного в цветах таблицы определяю типа так: AADD( aStatClsUsl , { { || Master->KDoljn == 0 .OR. Master->KMaster == 0 }, "12/4" } ) AADD( aStatClsUsl , { { || LEN( ALLTRIM(Master->Master) ) == 0 } , {128, 255} } ) AADD( aStatClsUsl , { { || Master->KDel == 0 }, "4/2" } ) Как в примере MiniGUI\SAMPLES\Advanced\Tsb_config После вызова другого Tsbrowse отладка не действует, окно с MsgDebug() не появляется. Хотя ставлю MsgLog(Alias()) - видно что база переключилась на новую. И тип ошибки вообще убивает: Error BASE/1003 Переменная не существует: KMASTER Called from (b)FIELDBLOCK(0) Called from TSBROWSE:DRAWLINE(2928) Called from TSBROWSE:DRAWSELECT(3176) Called from TSBROWSE:LOSTFOCUS(8108) Called from TCONTROL:HANDLEEVENT(898) Called from TSBROWSE:HANDLEEVENT(7342) Called from EVENTS(75) Так в новой базе и нету такого поля !!!! Причём тут запрос этого поля, я его не делаю... Или это oBrw:bChange отрабатывает ? Как тогда остановить его на время обращения к другой базе ? Вот стек вызов процедур: Помогите пожалуйста решить мою проблему !
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 944
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.04.16 07:50. Заголовок: Andrey для блока от..
Andrey для блока отображения используй FieldWBlock(cFieldName, select(cAlias)) вместо FieldBlock
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4850
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.04.16 10:01. Заголовок: SergKis пишет: для ..
SergKis пишет: цитата: | для блока отображения используй FieldWBlock(cFieldName, select(cAlias)) вместо FieldBlock |
| Блин, так просто... Сразу заработало !!! Спасибо БОЛЬШОЕ !!!
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 930
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.04.16 10:26. Заголовок: Andrey пишет: Как в..
Andrey пишет: цитата: | Как в примере MiniGUI\SAMPLES\Advanced\Tsb_config |
| Просто к сведению. Поправил эту неточность в вышеуказанном примере
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4853
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.04.16 08:33. Заголовок: Всем привет ! Что-то..
Всем привет ! Что-то неправильно работает в Tsbrowse следующее cDateBlock := 'FieldWblock( "VidOpl", Select("VidOpl") )' или '{ || VidOpl->VidOpl }' , использую oBrw:aColumns[nI]:bData := &( cDateBlock ) Вот скрин: Если делаю через свою функцию cDateBlock := '{ || SAY_SEL((Alias())->KVidOpl,"VidOpl","VidOpl") }', то показывает правильно: Соседнюю колонку показывает правильно, там делаю cDateBlock := 'FieldWblock( "StDogov", Select("StDogov") )' ! База не битая, индексы правильные... Из-за чего такое может быть ?
|
|
|
Haz
|
| |
Пост N: 893
Зарегистрирован: 20.02.11
|
|
Отправлено: 18.04.16 11:00. Заголовок: Andrey пишет: Что-т..
*PRIVAT*
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4854
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.04.16 19:48. Заголовок: Вот ещё одна непонят..
Вот ещё одна непонятка в новой программе... Если редактируемое поле в таблице подключено в индексное выражение, то после окончания редактирования его, курсор уходит неизвестно куда, а потом при движении стрелка вверх/вниз появляется вторая фантомная таблица-дубль ! Т.е. все координаты Tsbrowsa сместились на новые... И куда здесь "копать" ?
|
|
|
|
Haz
|
| |
Пост N: 894
Зарегистрирован: 20.02.11
|
|
Отправлено: 18.04.16 20:04. Заголовок: Andrey пишет: И куд..
Andrey пишет: Самое простое. - после редактирования oBrw:GotoRecNo( (oBrw:cAlias)->(Recno()) )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4855
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.04.16 00:28. Заголовок: Да есть такая обрабо..
Да есть такая обработка у меня. ( наверно опечатался - GotoRecNo ?) oBrw:aColumns[nJ]:bPrevEdit := {|| nRecBuff := (oBrw:cAlias)->(RecNo()), MyFieldEdit( oBrw:aColumns[oBrwS:nCell]:Cargo ) } oBrw:aColumns[nI]:bPostEdit := {|| oBrw:GoToRec(nRecBuff), oBrw:GoLeft(), oBrw:Refresh(.T.) } А координаты бровса почему "улетают" ? Если убрать bPostEdit то улёт прекращается, но только тогда курсор может оказаться после редактирования на другой позиции. У меня еще в обработке сидит oBrw:bUserKeys := { |a,b,c| MyKeyCheck(a,b,c) }, где отслеживается набор букв и делается фильтр по этому полю. CASE nKey > 47 .AND. nKey < 254 cStSearchValue := cStSearchValue + KeyToChar(nKey)//LatRus( CHR(nKey) ) Form_Spr.Text_1.Value := cStSearchValue RefreshBrowse() Скрытый текст STATIC FUNCTION RefreshBrowse() LOCAL cSeek := Alltrim( Form_Spr.Text_1.Value ) LOCAL cStrSeek, cExp cExp := "'" + UPPER(cSeek) + "' $ UPPER("+cStPole_DbRelation+")" cStrSeek := '('+ oBrwS:cAlias +')->'+cStPole_DbSetFilter IF !Empty(cSeek) ( oBrw:cAlias )->( DbSetFilter( &("{||" + cExp + "}"), cExp ) ) ELSE ( oBrw:cAlias )->( DbClearFilter() ) END oBrwS:Reset() Form_Spr.oBrw.Setfocus RETURN NIL
|
|
|
|
Haz
|
| |
Пост N: 895
Зарегистрирован: 20.02.11
|
|
Отправлено: 19.04.16 10:20. Заголовок: Andrey пишет: Если ..
Andrey пишет: цитата: | Если убрать bPostEdit то улёт прекращается, но только тогда курсор может оказаться после редактирования на другой позиции. |
| замени на :bEditEnd А это цитата: | nRecBuff := (oBrw:cAlias)->(RecNo()) |
|
совершенно лишнее если спецом не меняешь текущую запись то она же и осталась. Можно просто GotoRec( (oBrw:cAlias)->(Recno()) )
|
|
|
Haz
|
| |
Пост N: 896
Зарегистрирован: 20.02.11
|
|
Отправлено: 19.04.16 11:35. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Добавил этот новый метод, но переименовал его в nAtColActual |
| еще мелкий фикс, сейчас объясню Часто использую перестройку бровса на лету - удаляю все колонки кроме первой в ней у меня ID записи и потом добавляю нужные для конкресного случая ::HideColumns() не катит для широких таблиц т.к. начинаются тормоза с пропусками скрытых колонок и прочие не нужные прорисовки Если в этот момент курсор стоит правее первой колонки то ::MouseMove высчитывает nColumn как 2 и при попытке проверить ToolTip получаем вылет с ошибкой. Вот код, на входе nColumn уже равен 1 , nFreeze = 0 , ::nColCount() = 1 т.к. все кроме 1 поудалял ::MouseMove() строка 8182 For nI := 1 To ::nColCount() IF nI > ::nFreeze IF nColPix > nColPixPos nColumn ++ // Тут получим 2 END nColPixPos += IF(::IsColVis2(nI), ::GetColSizes()[ nI ], 0 ) END End Далее в строке 8192 пытаемся влезть в несуществующую колонку If ( lHeader := ( nRowLine == 0 ) ) .and. ! Empty( ::aColumns ) .and. ; ! Empty( ::aColumns[ nColumn ]:cToolTip ) .... предлагаю ВЕСЬ кусок кода с выводом тултипа по колонке заключить в условие IF nColumn <= ::nColCount() // то есть курсор на области колонок А тут все с тултипами END
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 931
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.04.16 12:09. Заголовок: Haz пишет: предлага..
Haz пишет: цитата: | предлагаю ВЕСЬ кусок кода с выводом тултипа по колонке |
| Благодарю за разъяснение! Переработал этот кусок кода таким образом: If nColumn <= ::nColCount() If ( lHeader := ( nRowLine == 0 .or. nRowLine == -2 ) ) .and. ! Empty( ::aColumns ) .and. ; ! Empty( ::aColumns[ nColumn ]:cToolTip ) cToolTip := ::aColumns[ nColumn ]:cToolTip // column's header tooltip Else cToolTip := ::cToolTip // grid's tooltip EndIf If ::nToolTip != nColumn .or. nRowLine != ::nToolTipRow If Valtype( ctooltip ) == "B" cToolTip := Eval( cToolTip, Self, nColumn, nRowLine ) EndIf SetToolTip( ::hWnd, cToolTip, ::hToolTip ) SysRefresh() ::nToolTipRow := nRowLine EndIf ::nToolTip := nColumn EndIf ...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4860
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.04.16 18:41. Заголовок: Всем привет ! Испол..
Всем привет ! Использую SetArrayTo(). Как в нём сделать сортировку сразу по ДВУМ колонкам ? Или такое сделать нельзя ? У меня графа квартира сделаны в двух колонках: номер квартиры (NKVAR) и буква квартиры (CKVAR). Заранее спасибо за помощь.
|
|
|
Haz
|
| |
Пост N: 897
Зарегистрирован: 20.02.11
|
|
Отправлено: 22.04.16 08:26. Заголовок: Andrey пишет: Как в..
Andrey пишет: цитата: | Как в нём сделать сортировку сразу по ДВУМ колонкам ? |
| Asort () с блоком кода для сортировки. Хоть повсем сразу.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4861
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.04.16 18:08. Заголовок: Haz пишет: Asort ()..
Haz пишет: цитата: | Asort () с блоком кода для сортировки. Хоть повсем сразу. |
| Покрутил, так и эдак. Если добавлять новую запись и ставить новый номер квартиры, или изменить любую запись с номером квартиры, то тогда нужно опять делать aSort(). Решил пойти по другому пути: делаю скрытую колонку, помещаю туда STR(NKVAR)+CKVAR и делаю сортировку oBrw:SetOrder(2, , .F. ) Единственно что не понял/не знаю как сделать в первой колонке нумерацию автоматом по возрастанию ? Сейчас после добавления/удаления записи приходиться ручками пересчитывать нумерацию: FOR nI := 1 TO oBrw:nLen oBrw:aArray[ nI, 1 ] := nI // новая нумерация №№ NEXT
|
|
|
Haz
|
| |
Пост N: 899
Зарегистрирован: 20.02.11
|
|
Отправлено: 22.04.16 18:17. Заголовок: Andrey пишет: Единс..
Andrey пишет: цитата: | Единственно что не понял/не знаю как сделать в первой колонке нумерацию автоматом по возрастанию ? |
| а oBrw:nAt не подходит ? Бровс по массиву использую редко, но вроде там ::nAt правильный
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|