View Issue Details

IDProjectCategoryView StatusLast Update
0001423WishesMacropublic2014-10-02 18:53
ReporterMaximusAssigned Tovskirdin 
PrioritynormalSeverityfeatureReproducibilityhave not tried
Status closedResolutionfixed 
Platformx86OSWindowsOS VersionXP SP2
Product Version2.0 
Target VersionFixed 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 10:52

reporter   bugnote:0005512

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

vskirdin

2010-06-30 11:29

administrator   bugnote:0005513

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

HaRT

2010-06-30 11:33

reporter   bugnote:0005514

Last edited: 2010-06-30 11:35

View 2 revisions

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

vskirdin

2010-06-30 11:42

administrator   bugnote:0005515

Last edited: 2010-06-30 11:42

View 2 revisions

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

JohnDoe

2010-06-30 13:06

updater   bugnote:0005516

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

HaRT

2010-06-30 13:08

reporter   bugnote:0005517

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

vskirdin

2010-06-30 15:27

administrator   bugnote:0005518

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

vskirdin

2010-06-30 15:29

administrator   bugnote:0005519

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

HaRT

2010-06-30 15:30

reporter   bugnote:0005520

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

JohnDoe

2010-06-30 18:52

updater   bugnote:0005524

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

vskirdin

2010-07-02 10:28

administrator   bugnote:0005539

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

vskirdin

2010-07-02 11:26

administrator   bugnote:0005540

build 1601

JohnDoe

2010-09-13 12:28

updater   bugnote:0005764

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

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

vskirdin

2010-09-16 15:36

administrator   bugnote:0005781

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

HaRT

2010-09-16 15:42

reporter   bugnote:0005782

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

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

vskirdin

2010-09-16 15:46

administrator   bugnote:0005783

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

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

ы?

vskirdin

2010-09-16 17:48

administrator   bugnote:0005786

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

JohnDoe

2010-09-17 16:44

updater   bugnote:0005796

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

vskirdin

2010-09-17 17:19

administrator   bugnote:0005799

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

JohnDoe

2010-09-17 18:27

updater   bugnote:0005801

Last edited: 2010-09-17 18:45

View 3 revisions

$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 20:48

administrator   bugnote:0005803

фсе?

JohnDoe

2010-09-18 13:39

updater   bugnote:0005804

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

vskirdin

2010-09-18 18:16

administrator   bugnote:0005805

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

JohnDoe

2010-09-19 01:47

updater   bugnote:0005806

Last edited: 2010-09-20 13:26

View 2 revisions

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

JohnDoe

2014-08-22 19:20

updater   bugnote:0012919

Надо закрыть

Issue History

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