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

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

endproc
enddefine

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

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

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

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

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

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

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

Сcылка не битая. Даже если так - не без рук же ты - cходи и найди.
В фоксклубе замечательно работает поиск как по конфе , так и в решениях
...
Рейтинг: 0 / 0
Создание своего события
    #32339048
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как где взять IDL ?
Как обычно через #import из vfp8r.dll
Потерял уже исходники так бы пример привел...
...
Рейтинг: 0 / 0
Создание своего события
    #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
16 сообщений из 16, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Создание своего события
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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