Присвоение значений переменной при выборе пункта меню
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- StillZero
- Ветеран
- Сообщения: 454
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Контактная информация:
Пока понял вопрос... Ну да ладно, это мои проблемы.
Сам не проверял, но думаю поможет:
1. Установить меню FEQ - это то что пишется как ?MyMenu, соответственно для меню появится Embeds, правда, я не уловил там слова Accepted. Но попробовать можно.
2. Установить меню FEQ. В точке вставки, что то вроде TakeEvent на WindowManager, если вы конечно пишете на ABC, попробуйте что то вроде:
if EVENT()=EVENT:Accepted and FIELD()=?MyMenu
GLO:MyVariable=MyValue
end
3. Установить меню FEQ. При нажатии на подпунктах меню смотреть ?MyMenuItem{Prop:Parent}, который будет равен какому то ?MyMenu, т.е. отслеживать нахождение в пункте меню исходя из подпунктов.
4. Кратко, только суть: Можно поставить на MENU OWNERDRAW, но реально не перерисовывать меню, а отдавать уже существующему по умолчанию callback-у. Так вот при наведении на меню будет посылаться событие WM_DRAWITEM с указанием номера пункта меню, который можно вычислить и связать уже с существующим FEQ. Это не просто, но удивительно точно. ))))
Возможно есть еще различные варианты, которые мне сейчас не приходят в голову, ну там типо определения координат мыши.
aka Still Zero
ЗЫ: давно так не смеялся
Написал: PAA(27)
Сам не проверял, но думаю поможет:
1. Установить меню FEQ - это то что пишется как ?MyMenu, соответственно для меню появится Embeds, правда, я не уловил там слова Accepted. Но попробовать можно.
2. Установить меню FEQ. В точке вставки, что то вроде TakeEvent на WindowManager, если вы конечно пишете на ABC, попробуйте что то вроде:
if EVENT()=EVENT:Accepted and FIELD()=?MyMenu
GLO:MyVariable=MyValue
end
3. Установить меню FEQ. При нажатии на подпунктах меню смотреть ?MyMenuItem{Prop:Parent}, который будет равен какому то ?MyMenu, т.е. отслеживать нахождение в пункте меню исходя из подпунктов.
4. Кратко, только суть: Можно поставить на MENU OWNERDRAW, но реально не перерисовывать меню, а отдавать уже существующему по умолчанию callback-у. Так вот при наведении на меню будет посылаться событие WM_DRAWITEM с указанием номера пункта меню, который можно вычислить и связать уже с существующим FEQ. Это не просто, но удивительно точно. ))))
Возможно есть еще различные варианты, которые мне сейчас не приходят в голову, ну там типо определения координат мыши.
aka Still Zero
ЗЫ: давно так не смеялся
Написал: PAA(27)
Спасибо за направление мыслей. Вопрос разрешил следующим способом.
В Emded - WindowManager - TakeAccepted - внутри Loop сделал вставку
If Abs(Field()) => Abs(?MenuPrib) and Abs(Field()) < Abs(?MenuIm)
Glo:Ntask = 9104
.
If Abs(Field()) => Abs(?MenuIm) and Abs(Field()) < Abs(?MenuSpr)
Glo:Ntask = 9105
.
Оказалось, для меня это было открытием, что значения Field(), Accepted(),
?Field имеют на выходе отрицательные значения, поэтому пришлось прилепить к ним Abs
В Emded - WindowManager - TakeAccepted - внутри Loop сделал вставку
If Abs(Field()) => Abs(?MenuPrib) and Abs(Field()) < Abs(?MenuIm)
Glo:Ntask = 9104
.
If Abs(Field()) => Abs(?MenuIm) and Abs(Field()) < Abs(?MenuSpr)
Glo:Ntask = 9105
.
Оказалось, для меня это было открытием, что значения Field(), Accepted(),
?Field имеют на выходе отрицательные значения, поэтому пришлось прилепить к ним Abs