Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
То что нужно!
Спасибо.
Уже собираю проект немного,пока улетел на работу.Форма готова.
Над украшениями позже поработаю.
Кнопки работают,запросы отправляются,юмор в наличии.
Вопрос: первая меню отработала,как другое вызывать?
Через новую форму?
Еще как то?
Кирилл, ты исходник выкладывай. Зачем мне EXE.
Несколько разных по виду и наполнению меню нужно сделать?
Тогда да, лучше создавать новую форму.
В правой части, где имя формы (Form1) жми правой кнопкой -> Add Form.
Чтобы из кода вызвать другую форму:
VB.NET / VBA:
Form2.Show
Соответственно первую первую форму можно временно спрятать:
VB.NET / VBA:
Form1.Hide
'или
me.Hide
'me - ключевое слово ("меня"). Т.е. код действует на форму, внутри которой этот код написан.
Форма может быть вызвана:
модально (нельзя переключаться между формами - пример "Окно служб Windows" и "окно Свойств любой из служб")
немодально (можно переключаться - пример любые два окна проводника Windows)
Чтобы отобразить форму модально:
VB.NET / VBA:
Form2.Show 1
Немодально:
VB.NET / VBA:
Form2.Show 0
По умолчанию (если цифру не писать) будет вызвана немодально.
Надеюсь, ничего не препутал Вообще, контролы на форме можно создавать программно,
например, если тебе заранее неизвестно, сколько нужно создать флажков или кнопок...Также есть такой компонент, как таймер.
Он позволяет выполнять один и тот же код через N секунд.
Будет полезно, например, для периодического обновления данных на форме (если к примеру значения в реестре поменялись).
Такой способ является плохим тоном в программировании, т.к. существуют события.
Как только что-то изменилось в реестре, твоя программа может получить об этом извещении.
Но это не для новичков. Идем последовательно от простого к сложному.
Да.
Получается при этом будет открываться новое окно?
Надо тогда будет делать точное позиционирование,а старое закрывать или делать невидимым.
В целях безопасности формы делаем модальными.
Да,выглядит неплохо.
Одно но:
Не забыть при этом активировать его обратно или сразу же закрывать.
Думаю для разных меню по разному.
Пока что вторая форма закрывает первую,привидения нам не к чему.
Вроде разобрался,не хватает только опыта что где и как находится.
Допилю формы,накидаю меню и кнопки - буду снова писать если возникнут проблемы при создании сложных объектов на основе имени переменных...
А жутко и не будет. У тебя ведь конкретная задача.
Многого знать не нужно.
Главное правильно представить в голове алгоритм.
Если предполагается использовать один и тот же участок кода несколько раз,
лучше оформить его как отдельную функцию, в которую передавать нужные параметры.
Если нужно показать 1-ю форму после закрытия крестиком 2-й,
нужно создать событие "Запрос на закрытие формы" (Query Unload) или событие "После выгрузки из памяти формы" (Unload).
Для этого:
1) переходишь в окно кода 2-й формы.
2) в левом выпадающем списке выбираешь "Form"
3) в правом - QueryUnload
Будет создано событие:
Внутри события пишешь, как обычно:
VB.NET / VBA:
Form1.Show
Кстати, если внутри процедуры написать:
VB.NET / VBA:
Cancel = true
то форму нельзя будет закрыть крестиком.На счет твоего меню:
- проще сделать 3 кнопки, чем OptionButton-ы.
Но это твоя прога, так что я не лезу.
Возьми себе под руки справочник. Там по подгруппам все разбито.
Полезная вещь. Всегда должна быть под руками.
Справочник VBA. Операторы и функции в принципе все те же.
Разница только в событиях формы.
Если хочешь знать, что означают события и параметры как Cancel, UnloadMode
-> берешь справочник VB Крепкий орешек -> Разное полезное -> Описание событий VB -> ищешь например "QueryUnload".
Замечания по стилю.
Давай сразу учиться правильным общепринятым отступам:
Внутри процедуры все строки пишутся со знака табуляции:
VB.NET / VBA:
Private Sub run_Click()
If Ustanovka.Value = True Then
MsgBox "Priva ета кнопка 1)))"
else
MsgBox "О_о. Здесь такого не было :)"
End If
If Nastroika.Value = True Then
MsgBox "Priva это ж кнопка 2"
End If
end sub
3-я строка - еще 1 знак табуляции.
Теперь стандарт на счет названий контролов.
Если даешь им свои имена, не забывай пожалуйста ставить вначало префикс типа контрола.
Например, вместо Ustanovka пиши optUstanovka. (opt - от слова optionButton)
Тогда будет понятно к чему название относится.
Вместо GlavnoeOkno -> frmGlavnoeOkno.
Другие префиксы:
Чекбоксы: chkMyCheckBox
Кнопки: cbMyButton (cb - CommandButton)
Dragokas, как сделать так,что бы при нажатии кнопки "Задать имя меню" появлялся textbox,а при повторном нажатии данные передавались бы и textbox скрывался бы опять?
форма frmUstanovka_Menu
Создаешь TextBox на форме и в его свойствах сразу задаешь Visible = False
На кнопку вешаешь такой код:
VB.NET / VBA:
if cb1.caption = "Задать имя меню" then
TextBox1.Visible = True
cb1.caption = "Применить"
else
s = TextBox1.Text
TextBox1.Visible = false
cb1.caption = "Задать имя меню"
end if
В переменной s получаешь введенный текст.
Когда нажимаешь кнопку, название на ней меняется
и это служит индикатором того, какую часть кода в IF нужно выполнять.
cb1 - это имя объекта твоей кнопки. Подправишь сам.GlavnoeOkno - у меня все крякозябликами. Смени шрифт на стандартный.
Архив vba.rar но это язык vb6 а не vba.
стоит normal text.
Что то не так,я получаю ошибку:
VB.NET / VBA:
Private Sub cbNameMenu_Click(Index As Integer)
If cbNameMenu.Caption = "Задать название меню" Then
txtTypeName.Visible = True
cbNameMenu.Caption = "Применить"
Else
s = txtTypeName.Text
txtTypeName.Visible = False
cbNameMenu.Caption = "Задать имя меню"
End If
End Sub
Ошибкой выделяет .Caption в If cbNameMenu.Caption ,может для кнопки нельзя задавать?
Ты неправильно создал кнопку.
У тебя все кнопки являются массивом и сейчас имеют такие имена:
cbNameMenu(0)
cbNameMenu(1)
cbNameMenu(2)
Нужно создавать кнопки заново.
Если ты создаешь новую кнопку путем "копировать-вставить",
будет задан вопрос "Создать ли массив кнопок" -> нужно отвечать "нет".Давай начнем с кода для получения названий пунктов контекстного меню.
Интерфейс пока что ужасен Предлагаю чтобы на форме динамически создавались кнопки, идентичные контекстному меню.
Прикинь,я уже почти сам догадался)))
Читал много тем про caption и не мог понять почему у меня он недоступен.
Уже хотел на отдельной форме пробовать...
Private Sub cbNameMenu_Click()
If cbNameMenu.Caption = "Задать название меню" Then
txtTypeName.Visible = True
cbNameMenu.Caption = "Применить"
Else
Dim s
s = txtTypeName.Text
txtTypeName.Visible = False
cbNameMenu.Caption = "Задать имя меню"
End If
End Sub
А я кажется понял.
Делаем аналог меню ,добиваем каждый в объект Visible и drug'n'drop ,не забываем добивать навигацию и опционал и тогда все становится предельно интуитивно просто для пользователя!
Ну если я так все понял - тогда сразу добивать алгоритм на более глобальный.