View Issue Details

IDProjectCategoryView StatusLast Update
0001423WishesMacropublic2014-10-02 15:53
ReporterMaximus Assigned Tovskirdin  
PrioritynormalSeverityfeatureReproducibilityhave not tried
Status closedResolutionfixed 
Platformx86OSWindowsOS VersionXP SP2
Product Version2.0 
Fixed in Version3.0 
Summary0001423: Узнать состояние пункта меню
DescriptionS=Menu.ItemStatus([N]);

Вернуть состояние N-го пункта меню (N - 1-based), или текущего пункта, если N==0 или не указан.
Работает в абсолютном пространстве пунктов меню (без учета фильтров пр. механизмов сокрытия)

Возвращает набор флагов (битмаск):

0xFFFFFFFF - нету нишиша/ошибка (N вне диапазона наличности)

0x00000001 - Selected (текущий пункт)
0x00000002 - Checked (отображена метка выбора)
0x00000004 - Separator (пункт является разделителем)
0x00000008 - Disabled (пункт недоступен)
0x00000010 - Grayed ("серый")
0x00000020 - Hidden (не видим/скрыт фильтром)

TODO (после реализации 0001422):
0x00000040 - Hotkey present (имеет хоткей)
0x00000080 - Hotkey manual (хоткей был назначен юзером)
TagsNo tags attached.
Build0

Activities

HaRT

2010-06-30 07:52

reporter   bugnote:0005512

Иногда ещё пригодилось бы
0x00000010 - Hotkeyed (имеет горячую клавишу)

vskirdin

2010-06-30 08:29

administrator   bugnote:0005513

> 0x00000010 - Hotkeyed (имеет горячую клавишу)
а какую? :-)
назначенную руками или полуавтоматическую (автоматическую+из языкового ресурса)

HaRT

2010-06-30 08:33

reporter   bugnote:0005514

Last edited: 2010-06-30 08:35

> назначенную руками или полуавтоматическую (автоматическую+из языкового ресурса)
Ну значит надо ещё добавить бит(ы) для тип(а/ов) горячей клавиши. Просто я не силён во внутреннем устройстве Фара.

vskirdin

2010-06-30 08:42

administrator   bugnote:0005515

Last edited: 2010-06-30 08:42

этого пока нет (подробности 0001422)

JohnDoe

2010-06-30 10:06

updater   bugnote:0005516

Ещё пункт меню может быть скрыт, фильтром.

HaRT

2010-06-30 10:08

reporter   bugnote:0005517

Раз пошла такая пьянка, то ещё
* усечён в начале
* усечён в конце

vskirdin

2010-06-30 12:27

administrator   bugnote:0005518

а это нахрена про усечение?
пункт меню усекается только для вывода на экран, но хранится полностью (если это не так, то это баг)

vskirdin

2010-06-30 12:29

administrator   bugnote:0005519

добавил в "Подробности" еще 3 флага

HaRT

2010-06-30 12:30

reporter   bugnote:0005520

> а это нахрена про усечение?
Реальной потребности пока не знаю, но нафантазировать могу легко.
Например, шибко умный макрос может интеллектуально укорачивать текст пункта меню, если тот не умещается целиком.

JohnDoe

2010-06-30 15:52

updater   bugnote:0005524

Великий и могучий:
> 0x00000008 - Disabled (пункт недоступен/засерен)
:)

vskirdin

2010-07-02 07:28

administrator   bugnote:0005539

Уточнил описание

vskirdin

2010-07-02 08:26

administrator   bugnote:0005540

build 1601

JohnDoe

2010-09-13 09:28

updater   bugnote:0005764

>0x00000002 - Checked (отображена метка выбора)

Помимо "галки" встречаются ещё "+" и "-" (Ctrl-F12)
http://forum.farmanager.com/viewtopic.php?p=68827#p68827

vskirdin

2010-09-16 12:36

administrator   bugnote:0005781

и? предлагаешь различать все символы пометки? а вдруг кроме галки, плюс и минус кто-то поставит еще один Checked, отличный от этих символов?

HaRT

2010-09-16 12:42

reporter   bugnote:0005782

> предлагаешь различать все символы пометки?
А что, разве возможно в качестве пометки пункта меню влепить произвольный символ?!

Речь-то идёт о том, что хочется в макросах различить как минимум 3(?4) состояния пункта меню: не помечен, помечен положительно, помечен отрицательно (?, помечен неведомым образом).

vskirdin

2010-09-16 12:46

administrator   bugnote:0005783

Мля... :-(
здря ой как здря в VMenu::VMProcess() для MCODE_F_MENU_ITEMSTATUS стоит вот эта бадяга: "RetValue >>= 16;"

че будем делать?
Мои предложения (одно из):
1. нихрена не сдвигать значение, но тогда флаги-состояния будут в старшем слове (меняются макросы, писание и все такое), а в младшем слове U+XXXX либо 0 (в этом случае стандартная галка, при условии что флаг чекалки выставлен)
2. в старшем слове будет U+XXXX символ пометки.

ы?

vskirdin

2010-09-16 14:48

administrator   bugnote:0005786

делаю по второму варианту.
build 1673

JohnDoe

2010-09-17 13:44

updater   bugnote:0005796

Для энциклопедии нужен пример макроса, работающего с символом пометки.

vskirdin

2010-09-17 14:19

administrator   bugnote:0005799

давай :-)
hint
macro:post CtrlF12 %s=Menu.ItemStatus(2); Esc print(%s>>16)

JohnDoe

2010-09-17 15:27

updater   bugnote:0005801

Last edited: 2010-09-17 15:45

$If(Menu.ItemStatus() & 0x00000002)
    Msgbox("Selected", chr(Menu.ItemStatus()>>16))
$Else
    Msgbox("Not Selected")
$End

macro:post CtrlF12 Down $If(Menu.ItemStatus() & 0x00000002) Msgbox("Selected", chr(Menu.ItemStatus()>>0x10)) $Else Msgbox("Not Selected") $End

vskirdin

2010-09-17 17:48

administrator   bugnote:0005803

фсе?

JohnDoe

2010-09-18 10:39

updater   bugnote:0005804

Пример в неудачном месте: после "функция возвращает значение -1 (все биты установлены)"
Предлагаю разместить пример до этого замечания, либо добавить в него проверку на -1

vskirdin

2010-09-18 15:16

administrator   bugnote:0005805

патч твоего видения в студию

JohnDoe

2010-09-18 22:47

updater   bugnote:0005806

Last edited: 2010-09-20 10:26

Пожалуйста: http://forum.farmanager.com/viewtopic.php?p=69005#p69005

JohnDoe

2014-08-22 16:20

updater   bugnote:0012919

Надо закрыть

Issue History

Date Modified Username Field Change
2010-06-30 07:01 Maximus New Issue
2010-06-30 07:52 HaRT Note Added: 0005512
2010-06-30 08:29 vskirdin Note Added: 0005513
2010-06-30 08:33 HaRT Note Added: 0005514
2010-06-30 08:35 HaRT Note Edited: 0005514
2010-06-30 08:42 vskirdin Note Added: 0005515
2010-06-30 08:42 vskirdin Note Edited: 0005515
2010-06-30 10:06 JohnDoe Note Added: 0005516
2010-06-30 10:08 HaRT Note Added: 0005517
2010-06-30 12:27 vskirdin Note Added: 0005518
2010-06-30 12:29 vskirdin Note Added: 0005519
2010-06-30 12:29 vskirdin Description Updated
2010-06-30 12:30 HaRT Note Added: 0005520
2010-06-30 15:52 JohnDoe Note Added: 0005524
2010-07-02 07:28 vskirdin Note Added: 0005539
2010-07-02 07:28 vskirdin Description Updated
2010-07-02 07:28 vskirdin Description Updated
2010-07-02 07:29 vskirdin Description Updated
2010-07-02 07:29 vskirdin Assigned To => vskirdin
2010-07-02 07:29 vskirdin Status new => assigned
2010-07-02 08:26 vskirdin Note Added: 0005540
2010-07-02 08:26 vskirdin Status assigned => feedback
2010-09-13 09:28 JohnDoe Note Added: 0005764
2010-09-13 09:29 JohnDoe Status feedback => assigned
2010-09-16 12:36 vskirdin Note Added: 0005781
2010-09-16 12:42 HaRT Note Added: 0005782
2010-09-16 12:46 vskirdin Note Added: 0005783
2010-09-16 14:48 vskirdin Note Added: 0005786
2010-09-16 14:48 vskirdin Status assigned => feedback
2010-09-17 13:44 JohnDoe Note Added: 0005796
2010-09-17 14:19 vskirdin Note Added: 0005799
2010-09-17 15:27 JohnDoe Note Added: 0005801
2010-09-17 15:42 JohnDoe Note Edited: 0005801
2010-09-17 15:45 JohnDoe Note Edited: 0005801
2010-09-17 17:48 vskirdin Note Added: 0005803
2010-09-18 10:39 JohnDoe Note Added: 0005804
2010-09-18 15:16 vskirdin Note Added: 0005805
2010-09-18 22:47 JohnDoe Note Added: 0005806
2010-09-20 10:26 JohnDoe Note Edited: 0005806
2013-02-03 00:34 alexy Severity minor => feature
2014-08-22 16:20 JohnDoe Note Added: 0012919
2014-10-02 15:53 shmuel Build => 0
2014-10-02 15:53 shmuel Status feedback => closed
2014-10-02 15:53 shmuel Resolution open => fixed
2014-10-02 15:53 shmuel Fixed in Version => 3.0