Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пункты меню / 9 сообщений из 9, страница 1 из 1
20.07.2006, 06:09
    #33865598
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пункты меню
создала через menu editor пункты меню.
нужно из приложения все эти пункты меню забить в combo.
желательно без api.
...
Рейтинг: 0 / 0
20.07.2006, 09:04
    #33865777
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пункты меню
Эти менюхи убивают... Вот...
А с вашей бедой - можно перебирать коллекцию Controls и проверять тип, но пункты менюхи разные бывают... если это в свою очередь тоже коллекция, то и её обойти тоже нать... Эксперементируйте :)
...
Рейтинг: 0 / 0
22.07.2006, 22:11
    #33872047
Armenj
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пункты меню
Как и подсказал buser:
Пунктyы меню именуй
mnuOpen, mnuNew ...

Код: plaintext
1.
2.
3.
4.
5.
6.
    Dim ctl
    For Each ctl In Controls
        If InStr( 1 , ctl.Name, "mnu") Then
            cbo.AddItem ctl.Caption
        End If
    Next
...
Рейтинг: 0 / 0
24.07.2006, 06:34
    #33872680
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пункты меню
а если они у меня названы как попало, только сейчас возникла необходимость их перечислять. хотелось бы именно просто в цикле пробежаться по меню.
ну можно api, по другому я так понимаю, не получится.
...
Рейтинг: 0 / 0
24.07.2006, 08:40
    #33872769
Letter_D
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пункты меню
Без API можно так: перебрать все контролы, как рекомендовал Armenj, и проверить на специфическое свойство, которое есть только у меню.
Например, Checked или WindowList
Если это свойство чему-то равно, то добавить в комбо, если ошибка, то продолжить перечисление...
Так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
On Error GoTo  1 
    For Each ctl In Controls
        If ctl.WindowList Or Not ctl.WindowList Then
            combo.AddItem ctl.Caption
        End If
 2    Next

Exit Sub
 1  Resume  2 
...
Рейтинг: 0 / 0
24.07.2006, 08:58
    #33872783
Letter_D
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пункты меню
Или просто через TypeOf.

Код: plaintext
1.
2.
3.
4.
    For Each ctl In Me.Controls
        If TypeOf ctl Is Menu Then
            combo.AddItem ctl.Caption
        End If
    Next
...
Рейтинг: 0 / 0
25.07.2006, 06:05
    #33875354
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пункты меню
Letter_D, гениально и просто. огромное спасибо.
...
Рейтинг: 0 / 0
25.07.2006, 06:14
    #33875359
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пункты меню
Можно еще вопрос. а как мне исключить из этого списка пункты первого уровня, ну вот пример из IE (файл, правка, вид). т.е. выводить в список только вторые и дальше уровни меню.
...
Рейтинг: 0 / 0
25.07.2006, 11:06
    #33875871
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пункты меню
Так кажется.
Код: plaintext
1.
2.
3.
Dim mnu as Menu
For each mnu in MyMenuXXX
  Combo1.AddItem mnu.Caption
Next
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пункты меню / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]