Есть ли способ добавить всплывающую подсказку в родительскую форму MDI в VB6?

В настоящее время я работаю над проектом, в котором используется форма MDI. Чего я хотел бы добиться, так это того, что когда пользователь наводит курсор на один из параметров меню в меню MDI, появляется всплывающая подсказка с описанием того, что можно найти в указанном меню. Я в курсе, что в некоторых опциях VisualBasic 6 поддерживается ToolTip. Однако я не могу добавить это в форму MDI или добавить элемент управления меткой в ​​этом отношении. Кто-нибудь когда-нибудь сталкивался с этой проблемой, и если да, то есть ли обходной путь или решение?

Пожалуйста, дайте мне знать, если у вас есть какие-либо дополнительные вопросы или комментарии. Заранее спасибо.


person SSPX    schedule 06.02.2020    source источник


Ответы (2)


Я не знаю, чтобы какие-либо настоящие меню в VB6 для (даже не-MDI) имели свойство всплывающей подсказки; следовательно, MDIForm также не делает этого, когда отображается меню одной из его дочерних форм.

Однако есть несколько элементов управления, которые можно поместить в родительскую форму MDI. Наиболее полезным из них, вероятно, является PictureBox, в который вы затем можете поместить любой тип элемента управления, например CommandButtons. Он должен быть «пристыкован» либо к верхней, либо к нижней части формы MDIForm с помощью свойства PictureBox.Align. Элементы управления в PictureBox могут располагаться любым удобным для вас способом, и для них могут быть установлены обычные свойства всплывающей подсказки.

Еще один элемент управления MIDForm, с которым мне повезло, — это элемент управления ToolBar, который входит в состав компонента CommonControls. Как и у PictureBox, у него есть свойство .Align, позволяющее установить его вверху или внизу MDIForm. Вы можете поместить на него любое разумное количество «кнопок» и иметь разумный контроль над их внешним видом (графикой и т. д.); По поводу запроса OP вы можете назначить всплывающую подсказку для каждой кнопки. Было бы несложно изменить кнопки в зависимости от текущей активной формы, как это обычно делают меню MDI.

person Mark Moulding    schedule 07.02.2020
comment
Спасибо за ваш отзыв! Я попробую использовать оба и посмотрю, какой из них лучше всего адаптируется к требованиям. - person SSPX; 07.02.2020
comment
Это хороший подход и, несомненно, самый простой, если вы готовы отказаться от настоящего меню. Другим вариантом может быть сторонний элемент управления меню, который поддерживает всплывающие подсказки. Еще одним вариантом может быть создание подкласса основной формы, и, хотя это самый сложный подход, он, возможно, позволит вам достичь того, что вам нужно. - person Brian M Stafford; 07.02.2020

Другой вариант, который можно рассмотреть (но который может быть довольно утомительным для реализации), может заключаться в чтении свойств Mouse.X и Mouse.Y для каждого меню MDI и установке заголовков элемента управления Label (или TextBox) с помощью события Mouse Hover.

Вам нужно будет найти верхнюю левую и нижнюю правую точки для каждого меню MDI, и если он находится в поле, вы можете показать свой элемент управления меткой с предполагаемой подписью. Но обратите внимание, что вы не можете просто поместить какие-либо элементы управления в форму MDI, кроме, возможно, PictureBoxes, Toolbars и Coolbars и т. д.

Таким образом, элемент управления Label или TextBox должен быть сначала помещен поверх элемента управления PictureBox, который можно выровнять по верхнему краю.

person Ezani    schedule 18.02.2020