Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Создание своего события / 16 сообщений из 16, страница 1 из 1
28.11.2003, 15:03
    #32337895
ПО2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание своего события
Привет!
Как создать в фоксе свое событие у объекта? Допустим, система хочет перейти в спящий режим, из порта TCP пришел байт и т.д. Без использования COM сомпонент и как ему передать данные в качестве параметра.
Буду признателен. Условно назовем его MYEVENT

Define class lsend as custom
....
procedure MYEVENT(mydata)

endproc
enddefine

Вот возникло собитие в системе MSG_XXX и автоматом выполнился данные метод.
Буду признателен.
...
Рейтинг: 0 / 0
28.11.2003, 15:12
    #32337910
Hel!Riser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание своего события
в фоксе события AFAIK создать низя. тока методы. Для твоей задачки имхо пойдет таймер с опросом порта. и если там ч:е-та есть - то пускать такой-то метод
...
Рейтинг: 0 / 0
28.11.2003, 15:19
    #32337923
ПО2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание своего события
Несогласен.
Можно сделать псевдособытие.
1. Стартовать в FLL поток и с помощью ожидающих функций ловить то что мне надо.
2. Поставить ловушку через API на системные события HookWindowsMessage(...) она называвается по моему. Дело в том что процедуру дергать надо только через _Execute(), что не катит, при частом выполнении из обрабочика событий засирает стэк, что прямо соответствует описанию мелкомягких и их просьбам :) этого не делать. А если надо ?
Таймер не катит.
...
Рейтинг: 0 / 0
28.11.2003, 16:04
    #32337987
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание своего события
В 8 номере русскоязычного FoxTalk за этот год была статья Майка Хелланда о создании и использовании собственных событий. Разумеется речь идет о VFP8

Скачать пример (но не саму статью) можно здесь

http://newsletter.narod.ru/foxtalk/aug2003.htm

Можешь поискать в англоязычном оригинале, учитывая, что русскоязычное издание отстает на 8 месяцев от оргинала.

Сейчас рядом этой статьи нет, но если очень нужно, то в понедельник вкратце перескажу.
...
Рейтинг: 0 / 0
28.11.2003, 16:12
    #32338002
ПО2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание своего события
Спасибо.
Буду признателен.
...
Рейтинг: 0 / 0
28.11.2003, 16:46
    #32338049
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание своего события
Мне кажется тут не все так просто...
Речь в любом случае идет о многопоточном приложении. Я бы все же попытался в этом случае запустить потом в СОМ объекте на С++ и пытаться инициировать из него событие в VFP используя ссылку на _VFP.
...
Рейтинг: 0 / 0
28.11.2003, 18:42
    #32338194
ПО2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание своего события
А по хендлу главного окна никак ?
...
Рейтинг: 0 / 0
28.11.2003, 18:52
    #32338204
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание своего события
Зачем хендл главного окна если можно напрямую обращаться к _VFP, а там дальше DoCmd и вперед...
...
Рейтинг: 0 / 0
28.11.2003, 21:41
    #32338305
Создание своего события
В ФоксКлубе есть замечательное решение
Колпачева Сергея aKa WiRuc. Полагаю это то - что тебе нужно.
Исходники прилагаются.
Удачи.
...
Рейтинг: 0 / 0
29.11.2003, 12:24
    #32338411
ПО2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание своего события
То Crip :
Как обащаться ?
и где я IDL возьму.
...
Рейтинг: 0 / 0
29.11.2003, 12:35
    #32338413
ПО2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание своего события
ТО: Андрей_Давыдов
Спасибо, а можно поточнее ссылочку. Линк на главную страницу редиректит, а
желательно посмотреть, что на сайте на эту тему обсуждалось.
Потому как есть вопросы.
...
Рейтинг: 0 / 0
30.11.2003, 15:55
    #32338732
Создание своего события
2 ПО2

Сcылка не битая. Даже если так - не без рук же ты - cходи и найди.
В фоксклубе замечательно работает поиск как по конфе , так и в решениях
...
Рейтинг: 0 / 0
30.11.2003, 16:02
    #32338737
Создание своего события
2 ПО2

Сcылка не битая. Даже если так - не без рук же ты - cходи и найди.
В фоксклубе замечательно работает поиск как по конфе , так и в решениях
...
Рейтинг: 0 / 0
30.11.2003, 16:07
    #32338739
Создание своего события
2 ПО2

Сcылка не битая. Даже если так - не без рук же ты - cходи и найди.
В фоксклубе замечательно работает поиск как по конфе , так и в решениях
...
Рейтинг: 0 / 0
01.12.2003, 10:18
    #32339048
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание своего события
Как где взять IDL ?
Как обычно через #import из vfp8r.dll
Потерял уже исходники так бы пример привел...
...
Рейтинг: 0 / 0
01.12.2003, 11:08
    #32339137
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание своего события
Андрей Давыдов видимо имел в виду данное решение

http://www.foxclub.ru/sol/index.php?act=view&id=289

Теперь по поводу статьи Майка Хелланда в августовском номере русскоязычного журнала FoxTalk за 2003 год.

Там в заголовке вкратце упоминается, что в VFP8 появилась возможность инициализировать и реагировать на пользовательские события, но собственно статья посвящена связыванию событий (event binding).

Используются следующие функции

BindEvent() - связывание событий, т.е. автоматический вызов события при наступлении некоторого другого события
RiseEvent() - инициализация указанного события

Пример кода из этой статьи

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
*  1 . Создаем компонент моей системы
LOCAL phone, driver
phone=CreateObject( "Phone" )
driver=CreateObject( "Driver" )

*  2 . Связываем их вместе
BindEvent(phone,  "Ring" , driver,  "AnswerPhone" )

*  3  И приводим систему в движение
phone.IncomingCall()

Define Class Phone as Custom
Function IncomingCall()
	* Описываем специальную логику для получения звонка
	* Пусть некто знает, что посутпил звонок
	RaiseEvent(this,  "Ring" )
Return
* Функция, необходимая для события Ring Event
Function Ring
Return
EndDefine

Define Class Driver As Custom
Function AnswerPhone()
	* Здесь должна следовать логика для ответа по телефону
	MessageBox( "Hello?" ,  32 )
Return
EndDefine


Сами классы не ссылаются друг на друга, на другие классы или объекты. Но при наступлении события Ring класса Phone автоматически наступает событие AnswerPhone класса Driver. Если телефон звонит, то водитель ответит.

Есть еще функции UnBindEvent() и AEvents(), использующиеся для явного удаления выбранной связи. Но поскольку связь автоматически удаляется при удалении объектов, то эти функции редко используются.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Создание своего события / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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