Страница 1 из 1

Push button

Добавлено: 13 ноя 2017, 09:44
Yurets
Здравствуйте уважаемые форумчане, подскажите пожалуйста по Push button.
Имееися несколько Push button. И по нажатию одного из них выполняется алгоритм. Какое это событие в Event?
Т.е. пока кнопка нажата выполняется алгоритм Push button1.
Спасибо.

Re: Push button

Добавлено: 13 ноя 2017, 10:46
Vitekkz88
Вынесите выполнение алгоритма за рамки Event-структуры. Само событие(True/False) для кнопки ловите через очередь или уведомитель. Если нужно дёрнуть event-структуру в какой-то момент, то UserEvents используйте.

Re: Push button

Добавлено: 13 ноя 2017, 11:28
Vitekkz88
Yurets, у кнопки задайте свойство Latch Until Relesead если под нажатием имеется ввиду физически, то есть пользователь нажал кнопку и удерживает. Если кнопка залипаемая, то тем более выносите выносите выполнение алгоритма из event-структуры. Что там за хитрый алгоритм, который не может быть реализован в другом потоке? Если же всё-таки нужно это делать в Event-е, то тогда UserEvents используйте и генерируйте события на своё усмотрение.

Re: Push button

Добавлено: 13 ноя 2017, 11:59
Yurets
Алгоритм не хитрый, просто длительный по времени из-за работы с несколькими устройствами, а у Вас в предложенном примере ошибка не вылетает?

Re: Push button

Добавлено: 13 ноя 2017, 12:03
Yurets
Очень тяжело уходить от эвента, когда все проекты были на нем и работают стабильно.
Но не всё им можно реализовать как оказалось.Очень жаль.
Пришло время панели синхронизации.

Re: Push button

Добавлено: 13 ноя 2017, 12:14
Yurets
Спасибо

Re: Push button

Добавлено: 13 ноя 2017, 16:18
Vitekkz88
Event структура как бы намекает:"эй, разработчик! Я предназначена для обработки пользовательских событий ". Не надо туда пихать всякого, а затем костылей прикручивать. Делайте по классике, проблем будет в разы меньше! Инфа сотка:-)

Re: Push button

Добавлено: 17 ноя 2017, 12:39
Yurets
Да, работает программа шикарно. Прям ощущение, что стала быстрее.
Возник такой вопрос:
Имеется около 10 событий.
Чтобы запустить одно событие нужно нажать кнопку этого события, чтобы остановить нажать ту же кнопку.
Получается, чтобы запустить другое событие надо сначала выключить кнопку "предыдуще-включенного" события.
Вроде бы мелочь, но пользователи "заклюют".
А хочется сделать, чтоб работало как эвент: Если включено одно событие- другие выключены.
Как этого добиться с помощью уведомителей.
Пример прилагаю.
Спасибо.

Re: Push button

Добавлено: 17 ноя 2017, 13:56
Vitekkz88
Yurets, у вас в коде 2 event-структуры, не надо так. Одной хватит для обработки событий. Разделите задачи на группы: группа задач для параллельного исполнения и группа задач, в которой может быть активна только одна. Тогда нужно будет менять только состояние предыдущей кнопки на false,а задача будет остановлена, т.к. будет запущена другая из этой группы.
Ту группу, где может быть только одна задача выносите в отдельный поток.
Для параллельных задач делайте отдельный цикл на каждую задачу.
Пример приложил.

Re: Push button

Добавлено: 20 ноя 2017, 13:49
Yurets
Vitekkz88
Спасибо большое, работает отлично, пользователи тоже отметили четкое срабатывание кнопок