Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / BindEvent() / 5 сообщений из 5, страница 1 из 1
25.01.2005, 13:55
    #32882360
Shurick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BindEvent()
Доброго времени суток, уважаемые.

Существуют две формы:
Form

FormEventHandler
так же существует объект ObjectEventSource от Cusom имеющий свойство Property
Обе формы имеют приватную сессию данных .
Форма Form имеет метод Metod.
Форма FormEventHandler имеет метод Delegate.

Метод Form.Metod() содержит:
Код: plaintext
ObjectEventSource.Property=NewValue
Событие FormEventHandler.Init содержит:
Код: plaintext
BINDEVENT(ObjectEventSource,'Property',This,'Delegate')

Теперь если вызвать метод FormEventSource.Event() соответственно вызывается метод FormEventHandler.Delegate(), но выполняется он в сессии данных формы FormEventSource, что недопустимо.
Подскажите что нужно сделать, чтобы FormEventHandler.Delegate() выполнялся в сессии данных своей формы?
...
Рейтинг: 0 / 0
25.01.2005, 18:01
    #32883128
- Ноль -
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BindEvent()
Добавить к объекту FormEventSource свойство , типа myid_datasession
До связывания определить ему:

with FormEventSource
.myid_datasession = .DataSessionId
endwith

Ну и все в принципе и все
Теперь Delegate() делаешь так:
SET DATASESSION TO THIS.myid_datasession
И ты в своей сессии. Только потом после окончения выполнения не забудь
вернуть все в исходное.
...
Рейтинг: 0 / 0
26.01.2005, 05:42
    #32883583
Shurick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BindEvent()
SET DATASESSION typically is used to debug forms. Care should be taken when issuing this command when a form is active, because tables in non-current datasessions are not accessible.

Все же я пробовал в методе Delegate написать код:
Код: plaintext
SET DATASESSION TO ThisForm.DataSessionId
однако это не сработало, сессия данных просто не переключилась.

Вобще идея была в следующем. Существует открытое свойство у объекта с областью видимости public. Это свойство содержит дату. Существует форма <выбор_периода>, меняющая эту дату. Существует конечное число форм, которые используют эту дату, для формирования курсоров. Хотелось, что бы при изменении свойства содержащего дату, формы перестраивали бы свои курсоры. Может подскажете как действовать в этом случае. Все формы имеют приватные сессии данных. Пишу на vfp8.0sp1.
...
Рейтинг: 0 / 0
27.01.2005, 04:42
    #32886006
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BindEvent()
Hi Shurick!

Паттерн "подписчик" реализуется и без BindEvent - например тупым сохранением
ссылок на форму-подписчик в коллекции формы-издателя (коллекция имеет
приятное свойство - если туда пихать ссылки на формы, то убиение формы
автоматом выкинет ссылку из коллекции).
Можно также сделать при изменении даты цикл по всем формам, проверяя у них
наличие соотвествующего метода или свойства и вызывая этот метод/меняя это
свойство.
А что там не срослось с DS надо будет подумать, посмотреть, но не сейчас...

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
27.01.2005, 05:23
    #32886012
Shurick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BindEvent()
Согласен с вами, Igor Korolyov.
Использование BindEvent не единственный способ, решения данной задачи. Немного поставило в тупик, что при выполнении методов формы, не происходит переключение в ее DS. Вот и думаю, мож я туплю где то.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / BindEvent() / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]