On-line: tnsr2, гостей 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 
Профиль
Ответов - 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 пишет:

 цитата:
По мне лучше метод


Огромная благодарность за помощь!
Добавил этот новый метод, но переименовал его в nAtColActual
Вот что получилось


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




Пост N: 889
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 13.04.16 11:01. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Вот что получилось


Нормальненько получилось , в тултип можно добавить еще и номер недели
 
//Find number of week within year
FT_WOY( <dDate> ) -> <nResult>


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




Пост N: 5592
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.04.16 12:07. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Вот что получилось


Поправил линк на картинку (не видно было)

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




Пост N: 4847
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.04.16 19:57. Заголовок: В новой версии 1604 ..


В новой версии 1604 ушёл баг про который писал в Пост N: 4819 и N: 4822
Спасибо !

Спасибо: 0 
Профиль
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 отрабатывает ?
Как тогда остановить его на время обращения к другой базе ?


Вот стек вызов процедур:


Помогите пожалуйста решить мою проблему !


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




Пост N: 944
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.04.16 07:50. Заголовок: Andrey для блока от..


Andrey
для блока отображения используй FieldWBlock(cFieldName, select(cAlias)) вместо FieldBlock

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




Пост N: 4850
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.04.16 10:01. Заголовок: SergKis пишет: для ..


SergKis пишет:

 цитата:
для блока отображения используй FieldWBlock(cFieldName, select(cAlias)) вместо FieldBlock



Блин, так просто... Сразу заработало !!! Спасибо БОЛЬШОЕ !!!

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




Пост N: 930
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.04.16 10:26. Заголовок: Andrey пишет: Как в..


Andrey пишет:

 цитата:
Как в примере MiniGUI\SAMPLES\Advanced\Tsb_config


Просто к сведению. Поправил эту неточность в вышеуказанном примере

Спасибо: 0 
Профиль
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") )' !
База не битая, индексы правильные...
Из-за чего такое может быть ?


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




Пост N: 893
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 18.04.16 11:00. Заголовок: ­Andrey пишет: Что-т..


*PRIVAT*

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




Пост N: 4854
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.04.16 19:48. Заголовок: Вот ещё одна непонят..


Вот ещё одна непонятка в новой программе...
Если редактируемое поле в таблице подключено в индексное выражение, то после окончания редактирования его, курсор уходит неизвестно куда, а потом при движении стрелка вверх/вниз появляется вторая фантомная таблица-дубль !
Т.е. все координаты Tsbrowsa сместились на новые...
Вот так на экране это выглядит:


И куда здесь "копать" ?

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




Пост N: 894
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 18.04.16 20:04. Заголовок: Andrey пишет: И куд..


Andrey пишет:

 цитата:
И куда здесь "копать" ?



Самое простое. - после редактирования oBrw:GotoRecNo( (oBrw:cAlias)->(Recno()) )

Спасибо: 0 
Профиль
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()

Скрытый текст


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




Пост N: 895
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 19.04.16 10:20. Заголовок: Andrey пишет: Если ..


Andrey пишет:

 цитата:
Если убрать bPostEdit то улёт прекращается, но только тогда курсор может оказаться после редактирования на другой позиции.


замени на :bEditEnd
А это
 цитата:
nRecBuff := (oBrw:cAlias)->(RecNo())

совершенно лишнее если спецом не меняешь текущую запись то она же и осталась.
Можно просто GotoRec( (oBrw:cAlias)->(Recno()) )




Спасибо: 0 
Профиль
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



Спасибо: 0 
Профиль
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
...



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




Пост N: 4860
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.04.16 18:41. Заголовок: Всем привет ! Испол..


Всем привет !

Использую SetArrayTo().
Как в нём сделать сортировку сразу по ДВУМ колонкам ?
Или такое сделать нельзя ?
У меня графа квартира сделаны в двух колонках: номер квартиры (NKVAR) и буква квартиры (CKVAR).

Заранее спасибо за помощь.

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




Пост N: 897
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 22.04.16 08:26. Заголовок: Andrey пишет: Как в..


Andrey пишет:

 цитата:
Как в нём сделать сортировку сразу по ДВУМ колонкам ?


Asort () с блоком кода для сортировки. Хоть повсем сразу.

Спасибо: 0 
Профиль
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



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




Пост N: 899
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 22.04.16 18:17. Заголовок: Andrey пишет: Единс..


Andrey пишет:

 цитата:
Единственно что не понял/не знаю как сделать в первой колонке нумерацию автоматом по возрастанию ?


а oBrw:nAt не подходит ? Бровс по массиву использую редко, но вроде там ::nAt правильный

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