Page 1 of 3

Можно ли сформировать нестандартное меню

PostPosted: 02 Feb 2012, 10:50
by JohnChaban
Всем привет
Можно ли сформировать меню в labview2009 такое как на картинке?

Re: Можно ли сформировать меню

PostPosted: 02 Feb 2012, 13:49
by AndreyDmitriev
Можно.

Re: Можно ли сформировать меню

PostPosted: 02 Feb 2012, 13:54
by kiparym
Для этих целей применяется «Tree Control» (см. примеры).

Re: Можно ли сформировать меню

PostPosted: 02 Feb 2012, 14:03
by AndreyDmitriev
kiparym wrote:Для этих целей применяется «Tree Control» (см. примеры).


Применять Tree Control для организации меню - это всё равно, что заколачивать шурупы молотком вместо того, чтобы воспользоваться отвёрткой.

Впрочем, автор топика не написал, что ему важнее - имелось ли ввиду именно вложенное меню (его можно стандартными средствами сделать) - если имелось ввиду меню панели, то Edit->RunTime Menu... а если у контрола - то правая кнопка мыши, затем Advanced->Shortcut Menu->Edit..., либо, если имелось ввиду меню, разворачивающееся вверх, как показано на картинке, а не вниз, как это стандартное меню делает — в этом случае задачка заметно усложняется и без опыта на месте автора я б не стал с этим связываться, а воспользовался тем, что есть в LabVIEW.

Re: Можно ли сформировать меню

PostPosted: 02 Feb 2012, 14:09
by JohnChaban
Задачу я чуток не так написал
Нужно чтобы например длина строки главного меню занимала не всю дину окна а часть некоторую часть
Или например чтобы главное меню расположить не горизонтально а вертикально слева или справа виртуального прибора.
Можно ли такое осушествить.
Если да как?

Re: Можно ли сформировать меню

PostPosted: 02 Feb 2012, 14:42
by AndreyDmitriev
Понятно. Осуществить можно, но не очень просто. Перенести стандартное меню в вертикальную позицию, как это уже понятно, невозможно. Можно в качестве первого уровня сложить просто колонку кнопок. Декорации надо поправить так, чтобы они визуально от меню не отличались. Затем два варианта - либо воспользоваться встроенными контекстными меню у каждой кнопки (в event структуре можно перебросить правую кнопку на левую, так что эти меню будут открываться по щелчку левой кнопкой) - так будет легче создавать эти меню динамически (если надо) и обрабатывать от них события, либо другой вариант - динамически вызывать SubVI, у которого заголовок и бордюр выключены, а на панели массив элементов - будет иллюзия того, что это меню (будет сложнее обрабатывать сообщения от кликов по элементам, кроме того придётся позаботиться о том, чтобы эти панели прятались, когда мышка нажимается за их пределами, но зато и свободы больше - можно, к примеру, сделать меню с иконками). Ещё можно поискать готовое решение, скажем на основе .net, но мне такое не попадалось. Такое вообще мало кто делает - ведь часть пользователей будет впадать в ступор от такого расположения меню. Характер вопроса говорит о том, что опыта у Вас пока не очень много, так что остановитесь на стандартном меню.

Re: Можно ли сформировать меню

PostPosted: 02 Feb 2012, 14:55
by Pavel Krivozubov
JohnChaban wrote:Задачу я чуток не так написал
Нужно чтобы например длина строки главного меню занимала не всю дину окна а часть некоторую часть
Или например чтобы главное меню расположить не горизонтально а вертикально слева или справа виртуального прибора.
Можно ли такое осушествить.
Если да как?

Вообще кстати говоря выложенная тобой структура очень напоминает TabControl)

Re: Можно ли сформировать меню

PostPosted: 02 Feb 2012, 15:01
by AndreyDmitriev
Да, Павел прав - Tab контрол тоже можно использовать, но в этом случае допилить его до полного сходства с меню не удастся - придётся чуть изменить концепцию.
Вот, кстати, меню, в стиле "Ribbon", выполненное на Tab контроле:
https://decibel.ni.com/content/groups/u ... in-labview

Re: Можно ли сформировать меню

PostPosted: 02 Feb 2012, 17:36
by JohnChaban
Дело все в том что как стандартное меню сделать я знаю
Я просто думал есть какие нибудь примочки.
Насчет опыта с LaBVIEW работаю более 5 лет.
Просто заказчик ставит нетривиальные задачи вот и прошу помощи у коллег на форуме.
Спасибо за ответы и советы.

Re: Можно ли сформировать меню

PostPosted: 02 Feb 2012, 18:03
by AndreyDmitriev
Ну если более пяти лет, то можно и взяться, конечно.
Но реализация зависит от того, насколько похоже должно быть меню похоже на настоящее меню - по поведению и дизайну. Чем меньше оно будет похоже на настоящее меню, тем будет проще. А если "один в один" с тем меню, что сверху, но по вертикали, то придётся повозиться. Я бы начал с кнопок с собственными меню. Всплывающие панели тоже можно использовать, но там мне видится проблема с их закрытием: при щелчке по основному меню всплывает панелька, если мышка уходит за пределы панели дочернего меню, она должна оставаться на экране, но должна закрыться, если пользователь щёлкнет вне области меню (а это может быть и за пределами основного окна приложения - ну, на десктопе, к примеру. Ну и начнётся процесс перехвата щелчков мыши за пределами окна, работа с событиями входа мыши в область панели и выхода из неё... Возможность добавления пунктов вменю тоже надо будет предусмотреть. Ну потом ещё горячие клавиши, навигация без мыши, обработка клавиши Alt, первых (подчёркнутых) букв меню, выключение отдельных пунктов, и т.д. В общем так себе удовольствие.

Re: Можно ли сформировать меню

PostPosted: 02 Feb 2012, 20:05
by IORIK
JohnChaban писал
Нужно чтобы например длина строки главного меню занимала не всю дину окна а часть некоторую часть
Или например чтобы главное меню расположить не горизонтально а вертикально

На мой взгляд, строка меню на то и строка, чтоб занимать всю длину программы, даже если там все одна опция "Close".
У меня был некоторый опыт работы с меню. Начинал я с Edit->RunTime Menu..., но потом перешел на программную компоновку меню. При этом при исполнении самой программы можно добавлять пункты в меню, их делать "активный/неактивный", "видимый/невидимый" и т.д. Этот вариант создания меню мне кажется гибким, удобными наиболее простым.

fig1.jpg

А по поводу вертикального меню - попотеть придется. AndreyDmitriev уже описал прелести этого.

Re: Можно ли сформировать меню

PostPosted: 02 Feb 2012, 21:50
by Vasiliy Baev

Re: Можно ли сформировать меню

PostPosted: 03 Feb 2012, 16:42
by Aleksey Feoktistov
Vasa, замечательная ссылка!
А может на оф. сайте есть пример, где показано как в меню картинки вставить?

Re: Можно ли сформировать меню

PostPosted: 03 Feb 2012, 17:06
by Vasiliy Baev
Aleksey Feoktistov, мне пример найти не удалось.
Посмотрите ещё вот такой вариант:
https://decibel.ni.com/content/groups/u ... abview-net

Re: Можно ли сформировать меню

PostPosted: 03 Feb 2012, 17:17
by Aleksey Feoktistov
Это ж целый тулкит с готовым примером!
Ценный матерал, спасибо