Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2008, 03:49   #1
maha
 
Регистрация: 18.06.2008
Сообщений: 3
По умолчанию Событие

Можно ли (и как) написать свое нестандартное событие? Например нужно чтобы форма реагировала на, скажем, сигнал от какой-либо платы (например от сетевой, но может быть и другая).

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

Спасибо.
maha вне форума Ответить с цитированием
Старый 18.06.2008, 08:40   #2
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Если винда посылает сообщение (сигнал от этой платы) приложениям, тогда ловить это сообщение.

Чтобы форма реагировала вставь в цикл Application.ProcessMessages. Или используй таймер, не так систему грузить будет.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 18.06.2008, 10:30   #3
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Забыл про потоки... кто мешает создать отдельный поток в котором будет опрос платы, а главный поток ( интерфейс ) в это время будет спокойно висет и реагировать на все приходящие сообщения системы... ну а чтобы не было загрузки со стороны отдельного потока делайте вызов в конце цикла например типа sleep(50); и все будет тип топ
BOBAH13 вне форума Ответить с цитированием
Старый 18.06.2008, 12:41   #4
maha
 
Регистрация: 18.06.2008
Сообщений: 3
По умолчанию

Спасибо, попробую.. с потоками пока еще дело не имел, заодно и разберусь.

Проблема в том, что при нажатии кнопки на форме, если запускается процедура с гигантским циклом, то пока цикл не завершится на форме не работают кнопки, да вообще ничего, т.е. я даже не могу принудительно из цикла выйти.
Во время него идет сканирование некоторой платы и когда от нее приходит сигнал, на форму в компонент РичТекст должна выводиться некая информация. Так вот она выводится, когда цикл будет завершен, а нужно в процессе. Поэтому я решил длинный цикл заменить на событие (сигнал от платы), которое я бы просто отлавливал и обрабатывал (посылал инфу на компонент РичТекст).
maha вне форума Ответить с цитированием
Старый 18.06.2008, 13:59   #5
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Потоки то что вам нужно... почитайте про них, а в особенности про класс TThread и поймете почему и менно потоки )
BOBAH13 вне форума Ответить с цитированием
Старый 18.06.2008, 14:39   #6
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

С "некоторыми платами" под Windows мы работаем через драйвер и видим и плату, и драйвер, как файл, к которому вполне применимы "отложенные" чтение и запись - Overlapped IO, которые и предназначены для того, чтобы не приостанавливать вызывающий поток. Если плата обладает какой-то сигнализацией, значит эту её способность должен поддерживать и драйвер и выставлять некий синхросигнал, которого вполне можно ждать в интересующемся им приложении.
B_N вне форума Ответить с цитированием
Старый 18.06.2008, 18:53   #7
maha
 
Регистрация: 18.06.2008
Сообщений: 3
По умолчанию

Естественно есть и драйвер и процедуры чтения сигналов.. все есть, я просто не знаю как организовать так чтобы форма реагировала на процессы в плате. Т.е. обработчик события у меня есть, нету самого события
Пока месть я сделал через Application.ProcessMessages. Все заработало, но не особенно красиво, так что буду изучать потоки. Спасибо всем!
maha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проипсать событие? Sanek777 Общие вопросы Delphi 3 10.08.2008 14:48
Событие terminadoor Общие вопросы Delphi 13 17.07.2008 09:25
Событие один раз Михаил Юрьевич Общие вопросы Delphi 4 01.04.2008 20:40
событие BeforePost azat БД в Delphi 2 17.12.2007 15:34
Как поймать событие в COM? den303 Общие вопросы Delphi 0 13.09.2007 12:06