Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Private Sub Command1_Click()






Проверяем, какая радиокнопка нажата, и в зависимости от этого увеличиваем сумматор на количество баллов ответа

If Option1.Value = True Then SumAns = SumAns + Ball1
If Option2.Value = True Then SumAns = SumAns + Ball2
If Option3.Value = True Then SumAns = SumAns + Ball3

увеличиваем номер вопроса на один и проверяем, существует ли такой файл

NomVopros = NomVopros + 1
If Dir(App.Path & " \" & NomVopros & ".txt") = " " Then

если не существует, заканчиваем тест, находим среднее арифметическое и в зависимости от него выдаем сообщение в Text1 с помощью вложенного условия

Text1.Text = " Тест окончен"
If SumAns / (NomVopros - 1) < = 1 Then
Text1.Text = Text1.Text & " Вы злой как собака"
ElseIf SumAns / (NomVopros - 1) > 1 And SumAns / (NomVopros - 1) < = 2 Then
Text1.Text = Text1.Text & " Бывают и добрее"
Else
Text1.Text = Text1.Text & " Вы сама доброта, таких не бывает"
End If

Если есть файл, переходим к процедуре загрузки Loading и конец процедуре

Else
Loading
End If
End Sub

Вот, практически и все. Только для редактирования вопросов надо иметь возможность тайно заходить на первую форму. Для этого я использовал два клика по TextBox'у

Private Sub Text1_DblClick()
Form1.Show
End Sub

И последнее. Поскольку первой (по умолчанию) должна грузиться Form2, войдем в меню Проект вверху окна VB и в выпавшем списке кликнем по последней строке " Проект1 Свойства". У нас откроется окно " Свойства проекта". На вкладке " Главное" в поле " Объект запуска" выберем Form2. Готово. Сохраняем проект. Исходник можно скачать вверху страницы.

Объекты ComboBox и ListBox.

Ну и в конце главы поговорим еще об объектах.
Два объекта ComboBox и ListBox очень похожи. Основные различия их в следующем: ComboBox выполнен в виде выпадающего списка и пользователь может добавлять в него строки, а ListBox похож на TextBox, если все строки не вмещаются, включаются полосы прокрутки. Основные методы у них следующие:
.AddItem - позволяет добавлять пункты (строки)
.RemoveItem - позволяет удалять строки
А основные свойства это:
.List(n) - позволяет ввести или вывести содержимое n-ой строки (пункта)
.ListCount - позволяет узнать количество строк (пунктов в объекте)
.ListIndex - позволяет вывести номер строки пункта, или перейти к строке с эти номером. Для ComboBox'a пустая строка имеет номер -1 (минус 1), а строки списка нумеруются от 0 и далее, поэтому количество строк всегда на 1 больше, чем номер последней строки. В ListBox'e нет строки -1 (минус 1).
.Text - позволяет вывести содержимое стоки, например в TextBox

Исходя из этого, и преполагая, что в нашем проекте на форме Form1 лежат Text1, Command1, Combo1, List1, то
вот пример кое-каких действий, которые мы можем совершить с ComboBox или ListBox

- добавить строку (пункт)
Combo1.AddItem " Нулевая строка" ' добавляет строку номером (ListIndex) 0 (потому-что первая)
Combo1.AddItem " Вася" ' добавляет строку номером (ListIndex) 1 (потому-что вторая)
List1.AddItem " Нулевая строка"

Другой путь - это войти в свойство .List в окне свойств, щелкнуть по свойству и выпавшем окне и дописывать строки в ручную, но мне представляется это не решением вопроса.

- удалить строку (пункт)
Combo1.RemoveItem 0 или ' удаляет строку под номером (ListIndex) 0
List1.RemoveItem 0

- узнать (например вывести в TextBox) количество строк
Text1.Text = Combo1.ListCount
Text1.Text = List1.ListCount

- перейти к третьей строке
Combo1.ListIndex = 2
List1.ListIndex = 2

- вывести строку в TextBox
Text1.Text = Combo1.Text 'выводит строку, по которой щелкнули мыщью
Text1.Text = List1.Text
Text1.Text = Combo1.List(3) 'выводит четвертую строку
Text1.Text = List1.List(3)

- позволить пользователю дописать новую строку (только в ComboBox)
Это можно реализовать следующим образом. При загрузке пустая строка (ее индекс -1) пустая. В нее пользователь и пишет содержимое строки. Но оно не сохраниться. Поэтому, для сохранения новой строки можно использовать например, командную кнопку Command1. Тогда ее процедура будет выглядеть так

Private Sub Command1_Click()
Combo1.AddItem Combo1.Text
End Sub

Кроме того в окне свойств у этих объектов можно поставить свойство .Sorted в положение True. Тогда строки отсортируются в порядке возростания.
Ну вот про эти два объекта пока все.

Что касается графических объектов, то я упомяну их только для очистки совести. Нарисовать квадратик с помощью объекта Shape или линию с помощью объекта Line, по-моему может каждый и без особых инструкций.

Что касается объекта OLE, то это контейнер, который позволяет вставлять в форму различные объекты, например avi-файлы, картинки и т.п. Это достаточно капризный и кривой объект. В настоящий момент его подробное исследование нам совершенно ни к чему, есть задачи по-важнее.

Об объекте Data скажу следующее. Это один из объектов, который позволяет работать с базами данных, создавать, удалять, сортировать и т.п. записи. Но изучение этого объекта довольно серьезная задача. Мы вернемся к ней позже. Вообще, перед этим хорошо-бы познакомится с Access'ом и сделать с помощью него хотя-бы одну простенькую базу.

 

 

Конечно, можно обойтись и без меню. Я, например считаю, что меню надо использовать в сложных программах, чтобы избежать использования множества командных кнопок. Однако меню придает программе профессиональный, " не детский" вид, в отличие от насобаченых на форму кнопок. Для добавления меню имеется редактор Menu Editor. С его помощью и можно как раз добавлять, изменять, уничтожать меню.

Создай новый exe-проект. Вверху окна VB найди кнопку инструменты, и из выпадающего меню выберем Редактор Меню (рис.18). Обратит внимание, что вызов редактора меню доступен, когда ты нахожишься в окне формы - объект. Если ты редактируешь код программы или программа запущена, вызвать редактор меню нельзя.

Рисунок 18.
У насв общем-то откроется окно меню редактора (Рис.19)

Рисунок 19.

В первой строке этого чуда " Название" (Caption) мы пишем название меню, то, что у на отобразиться на экране при запуске программы. А во второй строке, " Имя" (Name) имя меню, которое используется в программном коде. Заполнение обоих этих полей обязательно.
Для примера слепим меню, которое (должно же меню что-то делать), изменяет свойства графического объекта Shape, поскольку мы наплевали на него в прошлой главе. Поэтому, нажмем кнопку OK, отчего наше окно редактора меню закроется, положим на форму Form1 объект Shape1. По умолчанию он у нас будет в виде прямоугольника. Снова откроем редактор точно также, как и в первый раз.

Итак, в названии пишем " Фигура", а в имени - mnuShape. Почему mnu? Потому что так принято, и в коде программы потом будет легче отличать меню от прочих переменных.

Из нашего пункта меню Фигура должно выскакивать, например, подменю Прямоугольник и подменю Круг. Мы можем нажать кнопку Дальше и курсор в нижнем большом окне (окно списка меню) перескочит на следующую строчку, сейчас пустую, а можем просто мышь кликнуть по нужной строке и таким образом перейти к следующему пункту. Перейдем на вторую строку и напишем в названии Прямоугольник, а в имени - mnuPram. Перейдем на третью строчку и напишем соответственно Круг и mnuKrug. Поскольку названия и имена я придумывал на ходу, прошу простить за их несуразность.
Вот и здорово, но если мы запустим нашу программу, то увидим, что наши названия расположились рядком, и никаких подменю не получилось. Для того чтобы строчку Прямоугольник переместить в подменю, нужно щелкнуть по ней в окне списка меню (при этом она выделится) и нажать маленькую стрелочку вправо. Ты увидишь, что строка переместилась вправо, как бы стала на другой уровень. Нажимая кнопки вправо и влево мы создаем подменю второго, третьего и т.д. уровня или выводим из подменю на более высокий уровень. Теперь посмотри на эту таблицу.

Определение уровня подменю Вид в редакторе меню Вид в программе
Мы не нажимали стрелку вправо, все наши пункты меню расположились в главном меню, подменю нет.
Мы нажали на стрелку вправо на строках " Прямоугольник" и " Круг" один раз, отчего они сдвинулись на 4 пикселя вправо и вошли в меню " Фигура", как строки подменю.
Мы нажали на стрелку вправо на строках " Простой", " Скругленный", " Квадрат", а также " Круглый" и " Овальный" два раза, отчего они сдвинулись в право на 8 пикселей и вошли в подменю следующего уровня (в подменю " Прямоугольник" и подменю " Круг" соответственно).


Сдвинем строчку Круг, как в таблице. Вот теперь у нас настоящее подменю. А кнопочками вверх и вниз мы можем изменять их положение по вертикали.

Теперь самостоятельно, так же, как в таблице, введем в подменю Прямоугольник подменю следующего уровня, куда войдет
Название Простой Имя mnuProstoi
Название Скругленный Имя mnuPramRound
Название Квадрат Имя mnuKvadrat
а в подменю Круг подменю следующего содержания (уровень тот же, что и у подменю Прямоугольник)
Название Круглый Имя mnuKrugli
Название Овальный Имя mnuOval

Кроме того еще введем паралельно меню Фигура меню Заливка (Самого первого уровня) c именем mnuPaint и в него поместим следующие подменю (их нужно передвинуть с помощью стрелки вправо на следующий уровень)
Название Залить Имя mnuZalit
Название Прозрачно Имя mnuProzrachno
Название Горизонтальная Имя mmuHorizont
Название Вертикальная Имя mnuVertical

В поле " Быстрая клавиша" из выпадающего списка мы можем назначить клавишу или комбинацию клавиш, для каждого пункта нашего меню.

Общий вид редактора меню должен получиться, как на рисунке 20.

Рисунок 20.

Если горячие клавиши были тобой назначены, они тоже показаны в окне списка меню (Ctrl+S, Ctrl+K и т.д.)

Что еще есть в редакторе меню. Ну понятно, что с помощью кнопок " Дальше", " Вставить", " Удалить" мы можем передвигаться в окне списка меню, вставлять и удалять строки. Если поставить галочку возле " Отмечено", то в меню данная строка тоже будет помечена галочкой (Это для переключателей) только эта галка так и будет светиться для нас это пока совершенно бесполезно. Галочка возле " Видимо" указывает на то, что эта стока видима, если ее убрать, пользователь не будет видеть эту строчку меню. Галочка возле " Включено" показывает, что эта строчка доступна пользователю. Если ее убрать, то эта строка будет показана тускло и кликать по ней пользователю будет бесполезно. Вообще-то эти свойства для пользы дела надо задавать программно, а не тыкать сейчас по ним мышью.

Дальше надо заставить наше меню работать. Нажми кнопку OK и выйди из редактора меню.
Внимание. Если кнопка OK не будет нажата, твои изменения в меню не сохранятся!
Закрой это чертов редактор и перейди к окну редактирования кода. Кликни по полю (General) и опаньки, все наши строчки там есть! Можно кликать и делать процедуру для любой строчки, то бишь пункта меню (рисунок 21).

Рисунок 21.
Но нам нужны только пунты самого последнего уровня, потому, что предыдущих уровней мы используем только для выбора.
Пишем процедуры, которые включим изменения свойств объекта Shape (ну там заливку, и вид). Свойств объекта Shape на самом деле больше, но мы используем некоторые из них:

Private Sub mmuHorizont_Click()
Shape1.FillStyle = 2
End Sub

Private Sub mnuKrugli_Click()
Shape1.Shape = 3
End Sub

Private Sub mnuKvadrat_Click()
Shape1.Shape = 1
End Sub

Private Sub mnuOval_Click()
Shape1.Shape = 2
End Sub

Private Sub mnuPramRound_Click()
Shape1.Shape = 4
End Sub

Private Sub mnuProstoi_Click()
Shape1.Shape = 0
End Sub

Private Sub mnuProzrachno_Click()
Shape1.FillStyle = 1
End Sub

Private Sub mnuVertical_Click()
Shape1.FillStyle = 3
End Sub

Private Sub mnuZalit_Click()
Shape1.FillStyle = 0
End Sub

Можно запустить программу, и с помощью меню изменять вид объекта Shape.

Но мы еще с меню не закончили. Допусти нам захотелось, чтобы меню появлялось не в стандарном месте в верхней строке нашего окна, а допустим, где угодно, например около курсоры мыши. Давайте " Фигура" оставим как есть, а меню " Заливка" превратим в контекстное, т. е. всплывающее. Но для этого сначала познакомимся с методом PopupMenu.

Метод PopupMenu.

С помощью этого метода мы можем создавать всплывающие меню в любом месте нашей формы (одновременно отображаться может только одно).
Синтаксис его таков






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.