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


Пост 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 
ПрофильЦитата Ответить
Ответов - 148 , стр: 1 2 3 4 5 6 7 8 All [только новые]


администратор




Пост N: 415
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.01.15 11:38. Заголовок: Andrey пишет: если..


Andrey пишет:

 цитата:
если раз 10 - колёсиком мышки покрутить,


минут 10 крутил колесиком , палец уже устал а база никак не хочет отсоединяться и все работает как положено Andrey пишет:


 цитата:
Как с этим бороться ?


смотреть чего понаписал в исходнике

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




Пост N: 3920
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.01.15 11:54. Заголовок: Haz пишет: смотреть..


Haz пишет:

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


Отдельно программа работает КАК ЧАСЫ (ни как не убивается....) ! Занимает 2,5 Мб - на диске и в памяти.

Включаю эту же программу в свою систему (5.5Мб на диске и 4.8 Мб в памяти) и на этой же базе получаю вылет.
Колесиком вверх-вниз секунд 20 и вылет. Я понимаю, что не каждый юзер так будет делать, но у меня и быстрей иногда сваливается с такой же ошибкой: Error DBCMD/2001 Файл не открыт:

При создании TBROWSE открываю всю базу. Потом по кнопке делаю условную индексацию (этой базы) по городу и уменьшаю список показа записей.
Может в этом дело ? При большом ехе-нике перестает работать ?

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




Пост N: 416
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.01.15 12:06. Заголовок: Andrey пишет: Включ..


Andrey пишет:

 цитата:
Включаю эту же программу в свою систему (5.5Мб) и на этой же базе получаю вылет



1 Возможно в большой системе другие установки или есть конфликт имен .. от размера исполняемого модуля это точно не зависит
2 Смотреть что висит на ON CHANGE и ON DRAW твоего справочника

Andrey пишет:

 цитата:
При создании TBROWSE открываю всю базу. Потом по кнопке делаю условную индексацию (этой базы) по городу и уменьшаю список показа записей.
Может в этом дело ?


Может и в этом , нужно как минимум oBrw:Reset() после того как была изменена рабочая область

PS/ а если не делать условную индексацию - эффект отключения наблюдяется ?


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




Пост N: 3921
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.01.15 12:36. Заголовок: Haz пишет: 1 Возмож..


Haz пишет:

 цитата:
1 Возможно в большой системе другие установки или есть конфликт имен ..


А какие другие установки ?
Конфликта имен точно нет. Переменные все переискал в других исходниках - таких нет. Были, уже удалил.

Haz пишет:

 цитата:
2 Смотреть что висит на ON CHANGE и ON DRAW твоего справочника


ON GOTFOCUS ( MyChangeBrowse(cAlias), Form_Spr.oBrw_1.Setfocus) ;
ON CHANGE (CorrectionFirstLast("oBrw_1"),MyChangeBrowse(cAlias), Form_Spr.oBrw_1.Setfocus)

Функция MyChangeBrowse(cAlias) Скрытый текст


Функция CorrectionFirstLast("oBrw_1") не моя, брал и примеров:
Скрытый текст


Haz пишет:

 цитата:
Может и в этом , нужно как минимум oBrw:Reset() после того как была изменена рабочая область


Да я рабочую область и не меняю. Алиас тот же самый.
Скрытый текст



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




Пост N: 417
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.01.15 13:17. Заголовок: ОТКЛЮЧИ ON CHSNGE и ..


ОТКЛЮЧИ ON CHANGE и попробуй без него

Andrey пишет:

 цитата:
RefreshBrowse()



Это что делает ?



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




Пост N: 3922
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.01.15 13:55. Заголовок: Haz пишет: Это что ..


Haz пишет:

 цитата:
Это что делает ?


Поиск по введенным буквам:
Скрытый текст


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




Пост N: 3923
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.01.15 13:59. Заголовок: Haz пишет: ОТКЛЮЧИ ..


Haz пишет:

 цитата:
ОТКЛЮЧИ ON CHANGE и попробуй без него


Так же вылетает после 20-30 секундного мышка-колёсико....
Error DBCMD/2001 Файл не открыт:

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




Пост N: 418
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.01.15 15:03. Заголовок: Andrey пишет: Так ж..


Andrey пишет:

 цитата:
Так же вылетает после 20-30 секундного мышка-колёсико..



после каждого "мышка-колёсико" вызывается ON CHANGE, можно предположить что проблема в нем. Отключи и проверь
Явно база нигде не закрывается , может уперся в максимальное число открытых баз/индексов ?



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




Пост N: 3925
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.01.15 15:20. Заголовок: Haz пишет: может уп..


Haz пишет:

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



Да там только эти справочники и открываются. Еще только оболочку сделал и менюшку справочники.
И десяти баз открытых не будет....

Haz пишет:

 цитата:
после каждого "мышка-колёсико" вызывается ON CHANGE, можно предположить что проблема в нем. Отключи и проверь



Проверил, только что еще раз. Убрал вообще ON CHANGE и ON GOTFOCUS
Так же вылетает после 20-30 секундного мышка-колёсико....
Error DBCMD/2001 Файл не открыт:

Может неправильно написал, хотя из примеров брал:
// создать объект TBROWSE
SprCreateBrowse( cSection, "oBrw_1", 'Form_Spr', nBrwTop+2, nBrwLeft, nBrwWdth, nBwrHght-2-nHB, ALIAS() )

ниже в программе:
PUBLIC &cBrw

DEFINE TBROWSE &cBrw ;
AT nRow, nCol ;
ALIAS cAlias ;
OF &cParent ;
WIDTH nWidth ;
HEIGHT nHeight ;
COLORS { CLR_BLACK, CLR_BLUE } ;
BACKCOLOR aBackColor ;
FONT 'Tahoma' SIZE ModeSizeFont()
//ON GOTFOCUS ( MyChangeBrowse(cAlias), Form_Spr.oBrw_1.Setfocus)
//ON CHANGE (CorrectionFirstLast("oBrw_1"),MyChangeBrowse(cAlias), Form_Spr.oBrw_1.Setfocus)

END TBROWSE


Есть какая нибудь функция показывающая открытые базы ?
Или самому писать надо ? У меня такая в терминалке была...


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




Пост N: 419
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.01.15 15:49. Заголовок: Andrey пишет: Или с..


Andrey пишет:

 цитата:
Или самому писать надо


имеется ввиду список Алиасов ?
готовой нет или бровс по алиасу - такая есть внутри h_tbrowse.prg

Function SBrowse( uAlias, cTitle, bSetUp, aCols, nWidth, nHeight, lSql )
можно вызвать с одним параметром uAlias

// создать объект TBROWSE
SprCreateBrowse( cSection, "oBrw_1", 'Form_Spr', nBrwTop+2, nBrwLeft, nBrwWdth, nBwrHght-2-nHB, ALIAS() )

PS попробуй Alias() явно задать ввиде символьного значения. такое впечатление что бровс его забывает

PPS проверь чему равно значение &cBrw:cAlias

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




Пост N: 4423
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.01.15 15:53. Заголовок: Haz пишет: имеется ..


Haz пишет:

 цитата:
имеется ввиду список Алиасов ?



Pasha пишет:

 цитата:
Оказывается, в харборе есть функция

hb_waEval( bBlock )

Блок кода bBlock вызывается для каждой открытой рабочей области. Т.е. массив алиасов или номеров р/о можно получить так:

aAlias := {}
hb_waEval( {|| AADD(aAlias, Alias())} )

или
aSelect := {}
hb_waEval( {|| AADD(aSelect, Select())} )



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




Пост N: 466
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.01.15 15:57. Заголовок: Andrey может так на..


Andrey
может так надо:
DEFINE TBROWSE &cBrw ;
AT nRow, nCol ;
ALIAS &cAlias ;
OF &cParent ;

 цитата:
Или самому писать надо ?


a := {}; AEval(array(50), {|x,e| iif( (e)->( used() ), aAdd(a, (e)->( alias() ), nil) })
msgDebug(a)


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




Пост N: 3926
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.01.15 16:34. Заголовок: SergKis пишет: може..


SergKis пишет:

 цитата:
может так надо:
DEFINE TBROWSE &cBrw ;
AT nRow, nCol ;
ALIAS &cAlias ;



Делал и так тоже.
у Григория пример брал из \MiniGUI\SAMPLES\Advanced\Tsb_filter\demo.prg


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




Пост N: 3927
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.01.15 16:45. Заголовок: SergKis пишет: AEva..


SergKis пишет:

 цитата:
AEval(array(50), {|x,e| iif( (e)->( used() ), aAdd(a, (e)->( alias() ), nil) })



Error E0030 Syntax error "syntax error at '}'"


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




Пост N: 3928
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.01.15 16:58. Заголовок: Haz пишет: PS попро..


Haz пишет:

 цитата:
PS попробуй Alias() явно задать ввиде символьного значения. такое впечатление что бровс его забывает

PPS проверь чему равно значение &cBrw:cAlias


Для проверки сделал отдельное меню:
MENUITEM "Алиас этой БД" ACTION { || MyGetUse("oBrw_1") }
SEPARATOR
MENUITEM "Список открытых БД" ACTION { || MyGetAllUse() }

После потери связи с базой выдает что база открыта: "STREET"
А если опросить все базы то показывает что 3 базы открыты !!!
Получается TBROWSE сам теряет связь с базой....
Что делать ?



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




Пост N: 420
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.01.15 17:19. Заголовок: Andrey пишет: Получ..


Andrey пишет:

 цитата:
Получается TBROWSE сам теряет связь с базой....
Что делать ?



Скорре всего слетат ( а точнее становится невыполнимым ) условие в блоке выборки/записи по колонке( или колонкам ) и уверен слетает не само а какой то кусок кода ему помогает.
нужно проверить до слета и сразу после
1. oBrw:cAlias - должно быть "STREET"
2. oBrw:aColumns[x]:cData должно быть что то типа "STREET->имя поля или FieldGet(). "
3. Eval( oBrw:aColumns[x]:bData) должно вернуть значение из текущей записи для колонки х

ЗЫ
в функции RefreshBrowse() есть вызов Alias() ? Андрей ты уверен в том что при выполнении RefreshBrowse() ВСЕГДА Alias() == "STREET" ?

и что там с тассировкой ошибки - на какую строку из h_browse.prg ругается ?








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




Пост N: 3930
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.01.15 18:14. Заголовок: Слетает всегда в одн..


Слетает всегда в одном месте, когда редактировать начинаешь. После того как колёсиком поездишь, кол-во записей становится 0/0 и начинаешь редактировать.
Я назначил свою функцию обработки и в зависимости условий, разрешаю/запрещаю редактировать ячейки или вызываю справочник (отдельный):
For nI := 1 to Len(aPoleField)
ADD COLUMN TO TBROWSE &cBrw // добавить новую колонку в TBROWSE
.....
IF cTypeField # "+" // кроме - автоинкремент поля
&cBrw:aColumns[nI]:lEdit := .T.
oBrw_1:aColumns[nI]:bPrevEdit := {|| MyFieldEdit( oBrw_1:aColumns[oBrw_1:nCell]:Cargo ) }
ENDIF
Next

Вылет всегда в:
Error DBCMD/2001 Файл не открыт: RLOCK
Called from RLOCK(0)
Called from RECLOCK(31) // это моя функция
Called from MYFIELDEDIT(1471) // это моя функция
Called from (b)SPRCREATEBROWSE(964)
Called from TSBROWSE:KEYDOWN(6329)
Called from TSBROWSE:HANDLEEVENT(7084)
Called from EVENTS(76)


RECLOCK(31) // это моя функция из терминалки
Скрытый текст



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




Пост N: 421
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.01.15 18:25. Заголовок: Andrey пишет: Calle..


Andrey пишет:

 цитата:
Called from TSBROWSE:KEYDOWN(6329)



похоже что то с блоком выборки не алё вот тут спотыкается при редактировании

TSBROWSE:KEYDOWN(6329
проверив что есть bPrevEdit и бровс не по массиву пытается выполнить блок и вылетает с ошибкой

If ::aColumns[ nCol ]:bPrevEdit != Nil

If ::lIsArr .and. ( ::lAppendMode .or. ::nAt > Len( ::aArray ) ) // append mode for arrays
Else // GF 16-05-2008
uVal := Eval( ::aColumns[ nCol ]:bData )
uVal := Eval( ::aColumns[ nCol ]:bPrevEdit, uVal )

If ValType( uVal ) == "L" .and. ! uVal
Return 0
EndIf
EndIf

EndIf


ЗЫ
MYFIELDEDIT в студию

ЗЫЫ И все же мне кажется что где то меняется рабочая область ! в bPrevEdit тыкни MsgDebug( Alias() )


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




Пост N: 3931
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.01.15 18:31. Заголовок: Сделал новый тест в ..


Сделал новый тест в функции MyFieldEdit() до начала редактирования при слёте базы:

MsgDebug(oBrw_1:nLen, ALIAS(), oBrw_1:cAlias )
MsgDebug( "RLock()=", (oBrw_1:cAlias)->(RLock()) )

Т.е. колёсиком подергал вверх-вниз на 5 записях, функция MyChangeBrowse(cAlias) показывает 0/0
начинаю редактировать:
1. MsgDebug показывает 5, "", "STREET"
2. MsgDebug показывает "RLock()=" .T.

Т.е. АЛИАС по всей задачи ALIAS() = "" - убит !!! Кем ?
На экране таблица есть (в объекте) а все связи разорваны !

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

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




Пост N: 4425
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.01.15 18:39. Заголовок: Haz пишет: MYFIELDE..


Haz пишет:

 цитата:
MYFIELDEDIT в студию


+1

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

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