Toolbox - параметр любому окну

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Toolbox - параметр любому окну

Сообщение gopstop2007 »

Toolbox - Группы товаров (no mdi), вызывается через кнопку из разных окон (mdi) где присутствует товар. В Toolbox пользователь выбирает нужную группу товара, и показывается товар по выбранной группе в другом mdi окне.

Сам app
1. Frame + все окна mdi открываются в максимайзе.
2. ToolBox(DOCK left + Docked left) открываю и скрываю(HIDE) до открытия окна с товаром из-за п.1

Окон много, возможно передавать id группы товара без id thread-ов для обновления в окне с товаром? :cat:
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 5159
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Toolbox - параметр любому окну

Сообщение kreator »

gopstop2007 писал(а):Окон много, возможно передавать id группы товара без id thread-ов для обновления в окне с товаром? :cat:
Не очень понятно - что, куда и как передаёте. Есть классы ToolbarClass, BrowseToolbarClass. Может нужен похожий функционал? Можно посмотреть там реализацию.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8028
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Toolbox - параметр любому окну

Сообщение Игорь Столяров »

gopstop2007 писал(а): Окон много, возможно передавать id группы товара без id thread-ов для обновления в окне с товаром?
Как вариант: можно записывать группу товара в Global переменную, а MDI окне просто ее считывать и обновлять по получению MDI окном фокуса. Ну и далее уже отрабатывать в окне изменения группы товаров (если это изменение есть).
Make Clarion Great Again ! 😎
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Toolbox - параметр любому окну

Сообщение gopstop2007 »

kreator писал(а):Не очень понятно - что, куда и как передаёте. Есть классы ToolbarClass, BrowseToolbarClass. Может нужен похожий функционал? Можно посмотреть там реализацию.
Типа такого

Код: Выделить всё

POST(Event:MyidProductGroup,,idThreadProduct)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Toolbox - параметр любому окну

Сообщение gopstop2007 »

Игорь Столяров писал(а):Как вариант: можно записывать группу товара в Global переменную, а MDI окне просто ее считывать и обновлять по получению MDI окном фокуса. Ну и далее уже отрабатывать в окне изменения группы товаров (если это изменение есть).
В том и дело, что мне надо при изменении группы товара (на toolbox-е фокуса нет) и для передачи фокуса на окно с товаром надо знать id Thread-a или имя окна.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8028
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Toolbox - параметр любому окну

Сообщение Игорь Столяров »

gopstop2007 писал(а): группы товара (на toolbox-е фокуса нет)
Тогда, если категорически не хочется посылать в окно событие об изменении группы товаров,
можно в MDI окне проверять изменение глобальной переменной с группой товаров по таймеру (например раз в секунду).
И при ее изменении - отрабатывать в MDI окне действия связанные с изменением группы товаров на Toolbox.

Хотя, конечно же проще, создать глобальную очередь с ID открытых MDI окон и при изменении группы товаров
на Toolbox просто посылать во все открытые MDI окна события на отработку изменений ....
Make Clarion Great Again ! 😎
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Toolbox - параметр любому окну

Сообщение gopstop2007 »

Игорь Столяров писал(а):... создать глобальную очередь с ID открытых MDI окон и при изменении группы товаров
на Toolbox просто посылать во все открытые MDI окна события на отработку изменений ....
Придется, тогда очередь с признаком наличия в окне товара :), если не найду другого решения.
Последний раз редактировалось gopstop2007 15 Март 2017, 15:14, всего редактировалось 1 раз.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8028
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Toolbox - параметр любому окну

Сообщение Игорь Столяров »

gopstop2007 писал(а): Придется, тогда очередь с признаком наличия в окне товара
Ну да ... В принципе, можно не заморачиваться и рассылать события во все окна, а обрабатывать там где есть в этом
необходимость (список товаров). И нужно учесть один момент: событие получает текущее окно в потоке.
Т.е. если в списке товаров открыта, например, карточка товара - то именно карточка получит событие на обновление ...
Вариант с проверкой изменения группы товара в глобальной переменной по таймеру этого недостатка лишен ... ;)
Make Clarion Great Again ! 😎
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1411
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 12 раз
Поблагодарили: 2 раза
Контактная информация:

Toolbox - параметр любому окну

Сообщение RaFaeL »

Если окон много, в какое ты хочешь передавать?
У нас сделано так - в каждом окне на OpenWindow и GainFocus идет GLO:GlobalThread=thread() и далее с тулбара в эту переменную-тред post, в окне ловишь событие и обрабатываешь
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Toolbox - параметр любому окну

Сообщение gopstop2007 »

Хоро
RaFaeL писал(а):Если окон много, в какое ты хочешь передавать?
У нас сделано так - в каждом окне на OpenWindow и GainFocus идет GLO:GlobalThread=thread() и далее с тулбара в эту переменную-тред post, в окне ловишь событие и обрабатываешь
Хорошее решение, как вариант, надо попробовать
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Toolbox - параметр любому окну

Сообщение Yufil »

Вроде бы System{Prop:Active} хранит номер треда активного mdi окна. По крайней мере, было так...
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Toolbox - параметр любому окну

Сообщение Yufil »

И точно хранит, в AbControl.tpw есть

Код: Выделить всё

#AT(%WindowManagerMethodCodeSection,'TakeAccepted','(),BYTE'),PRIORITY(3025)
 #SUSPEND
 #DECLARE(%DoneFirst)
 #FOR (%Control),WHERE(%ControlType='BUTTON' AND INSTRING('?Toolbar:',%Control,1,1)=1)
  #IF (NOT %DoneFirst)
  OF %Control
   #SET (%DoneFirst, 1)
  #ELSE
  OROF %Control
  #ENDIF
 #ENDFOR
    #?IF SYSTEM{PROP:Active} <> THREAD()
      #?POST(EVENT:Accepted,ACCEPTED(),SYSTEM{Prop:Active} )
      #?CYCLE
    #?END
 #RESUME
#ENDAT
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Toolbox - параметр любому окну

Сообщение gopstop2007 »

Yufil писал(а):Вроде бы System{Prop:Active} хранит номер треда активного mdi окна. По крайней мере, было так...
Спасибо, оказалось самое простое :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8028
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Toolbox - параметр любому окну

Сообщение Игорь Столяров »

gopstop2007 писал(а):
Yufil писал(а):Вроде бы System{Prop:Active} хранит номер треда активного mdi окна. По крайней мере, было так...Спасибо, оказалось самое простое
Я заранее извиняюсь за свою простоту, но можно пояснить для тех, кто в танке:
Как номер активного треда поможет передать событие на обновление из ToolBar в несколько открытых MDI окон ?!
Спасибо.
Make Clarion Great Again ! 😎
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Toolbox - параметр любому окну

Сообщение gopstop2007 »

Игорь Столяров писал(а):Я заранее извиняюсь за свою простоту, но можно пояснить для тех, кто в танке:
Как номер активного треда поможет передать событие на обновление из ToolBar в несколько открытых MDI окон ?!
Спасибо.
Это только для моего случая, смотрим в начало и видим все открываемые окна в максимайз, максимум, что может быть открыто и активно кроме основного окна, так это тулбокс :) И даже, если много окон и окно с товаром не активно, а группа товаров активна, то все равно не расходуются лишние ресурсы :) А насчет окон, мне казалось, что активно как правило одно на котором я нахожусь, или не так? :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Ответить