On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
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 [только новые]


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




Пост N: 1276
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.11.16 13:13. Заголовок: надо читать левый уб..


надо читать левый убежал и что то ставить, а правый еще в прошлых установках, спутался чуть чуть, сори

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




Пост N: 6097
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.11.16 13:23. Заголовок: SergKis Убедил. Тол..


SergKis
Убедил. Только пока не совсем четко представляю как это все правильно переделать , с Минигуи работаю наскоками.

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




Пост N: 1277
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.11.16 13:48. Заголовок: Dima Схематично мож..


Dima
Схематично можно делать так Скрытый текст


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




Пост N: 1278
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.11.16 13:50. Заголовок: PS забыл, после гот..


PS
забыл, после готовности окна (тсб) к работе вкл. This.MyTimer/Enabled := .T.

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




Пост N: 6098
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.11.16 14:14. Заголовок: SergKis Сделал так ..


SergKis
Сделал так
 
FUNC DoTimer( o3,o4 )
LOCAL nNew := GetProperty(o3:cParentWnd, 'Buf' , 'Cargo')
LOCAL nOld := GetProperty(o3:cParentWnd, 'oBrw3', 'Cargo')

If o3:loBrw3Ready

If empty(nNew)
RETURN NIL
EndIf

If nNew != nOld
SetProperty(o3:cParentWnd, 'MyTimer', 'Enabled', .F.)
Myfilter(o3,o4)
// тут перепоказ правого тсб
// ставим scope\filter и ....
SetProperty(o3:cParentWnd, 'oBrw3', 'Cargo', nNew)
SetProperty(o3:cParentWnd, 'MyTimer', 'Enabled', .T.)
EndIf
endif

RETURN NIL


Когда двигаюсь по бровсу o3 (главный) , то в правом o4 ни чего не меняется , так и надо.
Но вот когда остановился , правый бровс начинает все время обновляться и моргать.
Что не так сделал ? Где то нужно остановить таймер , не пойму где..

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




Пост N: 1279
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.11.16 14:22. Заголовок: Dima пишет Где то ну..


Dima пишет
 цитата:
Где то нужно остановить таймер , не пойму где..


Timer останавливать не надо, должно срабатывать nNew == nOld и выход из DoTimer
надо проверить, что там

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




Пост N: 6099
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.11.16 14:23. Заголовок: Мой косяк , баловалс..


Мой косяк , баловался сам с таймером и забыл убрать свой.
В общем , после того как я перестал двигаться по бровсу , правый бровс не обновился почему то

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




Пост N: 6100
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.11.16 14:26. Заголовок: SergKis пишет: Time..


SergKis пишет:

 цитата:
Timer останавливать не надо, должно срабатывать nNew == nOld и выход из DoTimer


Понял , сделал так
 
FUNC DoTimer( o3,o4 )
LOCAL nNew := GetProperty(o3:cParentWnd, 'Buf' , 'Cargo')
LOCAL nOld := GetProperty(o3:cParentWnd, 'oBrw3', 'Cargo')

If o3:loBrw3Ready

If empty(nNew)
RETURN NIL
EndIf

If nNew != nOld
//SetProperty(o3:cParentWnd, 'MyTimer', 'Enabled', .F.)
Myfilter(o3,o4)
// тут перепоказ правого тсб
// ставим scope\filter и ....
SetProperty(o3:cParentWnd, 'oBrw3', 'Cargo', nNew)
// SetProperty(o3:cParentWnd, 'MyTimer', 'Enabled', .t.)
EndIf
endif

RETURN NIL



Но правый бровс не обновляется после как я перестал двигаться по левому

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




Пост N: 1280
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.11.16 14:29. Заголовок: Dima пишет Но правый..


Dima пишет
 цитата:
Но правый бровс не обновляется после как я перестал двигаться по левому


так и задумано, работай теперь с правым (по правым кнопкам)
сместишь левый - получишь новый правый и т.д.
разве не так надо было ?

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




Пост N: 6101
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.11.16 14:32. Заголовок: я кажется понял в че..


я кажется понял в чем дело
Поставил заглушку на Bchange ))
Переделал на
oBrw3:bChange := {|| SetProperty(obrw3:cParentWnd, 'Buf', 'Cargo', (obrw3:cAlias)->( RecNo() ))}

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




Пост N: 1281
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.11.16 14:37. Заголовок: PS Если не двигаемся..


PS
Если не двигаемся, но через время надо перечитать с сервера, надо стелать чсетчик сек. и обновлять nOld := 0 :
 
FUNC DoTimer( o3,o4 )
LOCAL nNew := GetProperty(o3:cParentWnd, 'Buf' , 'Cargo')
LOCAL nOld := GetProperty(o3:cParentWnd, 'oBrw3', 'Cargo')
STATIC nRefr := 0
...
nRefr += 1

If nRefr > 5
nOld := 0
EndIf
If nNew != nOld
...


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




Пост N: 6102
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.11.16 14:43. Заголовок: Вообще была идея вык..


Вообще была идея выключать Таймер в Bchange , вот только не понятно когда его включить , если этого не сделать
и двигаться зажав кнопку вниз , правый бровс все равно будет обновляться НО с интервалом уставленным в таймере

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




Пост N: 1282
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.11.16 14:49. Заголовок: Dima пишет правый бр..


Dima пишет
 цитата:
правый бровс все равно будет обновляться НО с интервалом уставленным в таймере


По мне, это приемлемо - видно что все работает (главное правый тсб автономно сам ставит что надо)
Реакция отображения правого тсб 1-2 сек. - это нормально

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




Пост N: 6103
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.11.16 14:53. Заголовок: SergKis пишет: Реак..


SergKis пишет:

 цитата:
Реакция отображения правого тсб 1-2 сек. - это нормально


Мне показалось это время не приемлемо большим и поставил 200 мс

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




Пост N: 1283
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.11.16 15:01. Заголовок: Dima пишет Мне показ..


Dima пишет
 цитата:
Мне показалось это время не приемлемо большим и поставил 200 мс


Думаю, ты очень горячися и подгоняешь клиента к убыстренной работе, ему некогда подумать, попить чаю\кофе ...


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




Пост N: 6104
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.11.16 15:13. Заголовок: Когда таймер жил пря..


Когда таймер жил прямо в бровсе , понятно что были с этим проблемы , но по крайней мере при движении по главному
бровсу , подчиненный молчал как партизан. Остановил движение и правый обновился.


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




Пост N: 1284
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.11.16 15:55. Заголовок: Dima пишет подчиненн..


Dima пишет
 цитата:
подчиненный молчал как партизан. Остановил движение и правый обновился.


Так тут тоже можно сделать такое, отображать не при nNew != nOld, а при nNew == nOld по счетчику входов,
типа 3 раза вошли по тимер и nNew == nOld отображаем, надо немного усложнить тимер, мне всегда было лениво

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




Пост N: 6106
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.11.16 16:05. Заголовок: SergKis Понял. Спас..


SergKis
Понял. Спасибо !

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




Пост N: 1059
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 10.11.16 23:31. Заголовок: Дима, глянул твои ис..


Дима, глянул твои исходники внимательно и почитал все что написали.
Сорь раньше не мог.
Есть пару мыслей....
Во первых таймер не убивается каждые 50 мс а лишь тогда когда юзер оторвет палец от колеса. Проблема с утечкой памяти... Возможно и есть , но у себя не наблюдаю глюков.
А главная проблема мне кажется в исходнике - процедура myfilter не успевает выполниться за 50 мс и не происходит выравнивания номера записи и логикпос., это приводит к следующему тику таймера ит
д..
Уверен если задержку сделать 200 и перенести майфильтр в конец ( перед return) то основная причина глюка уйдет.
Что касается утечки, то можно на каждую 10 прорисовку второго бровса повесить сборщик мусора.
Сори за мой французский, пишу с мобилы.
У себя оставлю пока так. Позже переделаю на флаги, таймер инициализировать буду по инит бровса, а убивать при закрытии бровсе. Тогда и утечек не будет.

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




Пост N: 6111
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.11.16 23:36. Заголовок: Haz пишет: Сори за ..


Haz пишет:

 цитата:
Сори за мой французский, пишу с мобилы.


Игорь все нормально , кажется проблема решена.
Пошел по пути как посоветовал Сергей.
Отдал клиенту , если что то он будет стучать в рельсу.
Я сам долго ездил после доработки по бровсу , проблем не увидел.

Haz пишет:

 цитата:
Проблема с утечкой памяти...


Может и так , но мне этот гимор надоел. Нужно было просто сделать рабочий вариант что бы ни чего не глючило.
Вроде получилось.

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