Добавление пунктов в меню и обработка их выбора

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
td
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 08.04.2003 (Вт) 19:34

Добавление пунктов в меню и обработка их выбора

Сообщение td » 10.04.2003 (Чт) 16:56

как программно добавить пункты в меню и написать для них обработку событий?

спасибо!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 10.04.2003 (Чт) 17:00

Воспользоваться Menu Editor.

td
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 08.04.2003 (Вт) 19:34

Сообщение td » 10.04.2003 (Чт) 17:10

но мне надо программно. в зависимости от некоторого внешнего параметра
Напр., так:

Книги
...Книга1
...Книга2
...
...КнигаN

Заранее неизвестно сколько.. И кстати, по выбору этого пункта надо показывать форму. Она всегда одинаковая, но кое-что меняется в зависимости от номера книги. Как это тоже можно сделать?

и еще. Как узнать, существует ли форма (она просто скрыта) или на данный момент она еще не создана?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 10.04.2003 (Чт) 17:36

Ну если в процессе работы программы, то создавай контролы примерно так:



Controls.Add "VB.Menu", "MyMenu"



А определить, видна ли форма - проверяй Form.Visible

td
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 08.04.2003 (Вт) 19:34

Сообщение td » 10.04.2003 (Чт) 17:54

спасибо.. а обработку как сделать?

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 10.04.2003 (Чт) 18:10

пишешь процедуру:

Private Sub MyMenu_Click()

End Sub

MyMenu это имя меню и взято с поста RayShade.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 10.04.2003 (Чт) 18:15

Я не до конца понимаю, но кажется не получится привинитить обработчик событий к динамически создаваемому объекту.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 10.04.2003 (Чт) 18:18

RayShade писал(а):Я не до конца понимаю, но кажется не получится привинитить обработчик событий к динамически создаваемому объекту.

Почему?
Ведь если, к примеру создать коллекцию картинок, то к каждой можно обратиться и что то поменять в свойтсвах. или нет?
если да, то почему это не прокатит? а вообще я сейчас сам попробую....
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 10.04.2003 (Чт) 18:20

RayShade писал(а):Controls.Add "VB.Menu", "MyMenu"

Кстати эта строчка вообще не пашет.
Пишет:
Menu is not valid control type :roll:

PS:Опа! Я стал продвинутым пользователем! :D
Интересно куда меня заведет моя продвинутость....... :)
Последний раз редактировалось FaKk2 10.04.2003 (Чт) 18:29, всего редактировалось 1 раз.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 10.04.2003 (Чт) 18:20

Одно дело обратиться к проперте объекта а другое дело отреагировать на событие в нем происшедшее.

td
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 08.04.2003 (Вт) 19:34

Сообщение td » 10.04.2003 (Чт) 18:25

но к примеру в делфи это делается совсем просто.. объявляется процедура, которая потом присваевается обработке события..
точно так же, как значение проперти.

Неужели в ВеБе такое нельзя сделать?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 10.04.2003 (Чт) 18:30

Ну исходя из того, что получил FAKK2 и моих соображений можно заключить что меню динамически вообще изменять нельзя.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 10.04.2003 (Чт) 18:35

RayShade:
У меня есть гениальная идея, но мне надо вспомнить как динамически создавать объекты типа кнопки. там что то со свойством индекс связано....
Ты случайно не помнишь?
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 10.04.2003 (Чт) 18:41

Если ты про Load и его использование для добавления Control array, то это кстати должно прокатить - ведь меню то как раз и есть массив элементов.



Что то я выпустил этот момент из головы :roll:

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 10.04.2003 (Чт) 18:43

Во во! Оно самое, щас попробую написать.... :D
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 10.04.2003 (Чт) 18:56

Я вот наваял нечто работающее:
Код: Выделить всё
Private Sub Form_Load()
For i = 1 To 1
    Load Book(i)
    Book(i).Caption = "Книга " & i + 1
Next i
End Sub

Private Sub Book_Click(Index As Integer)
Select Case Index
Case 0:
    MsgBox "Книга 1!"
Case 1:
    MsgBox "Книга 2!"
End Select
End Sub


Цикл в лоаде грузит в память н-ое количество меню (в данном случае одно, т.к. одно уже в начале есть), и дает им надпись.
Следующую процедуру перепиши себе, и в case вставь то что тебе надо.
А чтобы вся это фигня заработала надо создать первый объект который будешь копировать, т.е. первое меню. даешь ему имя и индекс = 0.
Меню создаешь в Menu Editor. Вот и все, должно работать... :D
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 36

    TopList