PopUp меню при правом нажатии и OnAction

Программирование на Visual Basic for Applications
Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

PopUp меню при правом нажатии и OnAction

Сообщение Avtopic » 18.02.2006 (Сб) 14:36

Здравствуйте!
У меня такая проблема:
(Excel, Устанавливается правое меню для динамический созданного контроля на форме).
Убираю все кнопки из PopUp меню “Cell” при правом нажатии и вставляю свои кнопки.
Указываю для них OnAction. Все это происходит в модуле класса.

При клике на кнопки этого меню выходит сообщение без комментариев, только крест vbCritical.
При повторной попытке клика, сбой аппликации с сообщением “Send message…”

Если процедура обработки OnAction стоит в обычном модуле, все работает.

Что, в модуле класса нельзя помещать эти процедуры?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 18.02.2006 (Сб) 14:47

Нет конечно :roll:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 05.03.2006 (Вс) 16:48

Чтобы не создавать новую тему, в продолжение этой же теми:

Когда создаем меню с помощью Api, в конце DestroyMenu для разрушения меню надо только для главного меню, или подменю тоже надо по отдельности разрушать?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.03.2006 (Вс) 16:58

http://msdn.microsoft.com писал(а):DestroyMenu is recursive, that is, it will destroy the menu and all its submenus.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 05.03.2006 (Вс) 17:46

Читал, не увидел :shock: .
Спасибо за ответ!
За предыдущий тоже! :roll:

Осмелюсь задать еще вопрос, для моей задачи в тему…
Приходится вызывать разные диалоговые окна. С диалогами ChooseColor и ChooseFont в плане имени шрифта разобрался, а вот, размер шрифта как-то, криво возвращается. Ну что это за логическая единица для lfHeight структуры LOGFONT, которая возвращает вместо 2 – 3, вместо 3 – 5, вместо 8 – 11 и т.д.
Задача единственная как получить то число, которую выбрали в качестве размера шрифта (которая видна визуально).

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.03.2006 (Вс) 18:00

http://msdn.microsoft.com писал(а):lfHeight
Specifies the height, in logical units, of the font's character cell or character. The character height value (also known as the em height) is the character cell height value minus the internal-leading value. The font mapper interprets the value specified in lfHeight in the following manner.

...

For the MM_TEXT mapping mode, you can use the following formula to specify a height for a font with a specified point size:

lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);



Код: Выделить всё
Public Function ps(ByVal l As Long) As Long
  Dim hdc As Long
 
  hdc = GetDC(0)
  ps = l * 72 / GetDeviceCaps(hdc, LOGPIXELSY)
  ReleaseDC 0, hdc
End Function


Immediate window писал(а):? ps(11)
8
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 05.03.2006 (Вс) 21:35

Это тоже читал, и делал, но получал некруглое число

потом и это прочитал:
msdn.microsoft.com писал(а):Round the calculated point size to the nearest integer.

Но я же не фонт пишу, хочу просто число из Combox-а получить.

Ладно, главное, что от 8 до 72 результат правильный выходит. Спасибо большое!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Mail.ru [бот] и гости: 88

    TopList