Студопедия

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

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

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






Private Sub Form_Load()






Присваиваем значение переменной NomVopros единицу (мы же хотим начинать с первого вопроса) и устанавливаем значение нашего флага в значение False. Изначально мы предполагаем, что файл с номером вопроса 1 существует:

NomVopros = " 1"
Flag = False

Выводим в Label1 для пользователя номер обрабатываемого вопроса

Label1.Caption = " Вопрос № " & NomVopros

запускаем нашу процедуру загрузки файла Loading и конец процедуре Form_Load

Loading
End Sub

Теперь создаем процедуру для кнопки Command1 - это просто запись в файл с помощью оператора Write#. Только перед записью мы нашим переменным присвоим текущие значения Текстбоксов

Private Sub Command1_Click()
Vopros = Text1.Text
Otvet1 = Text2.Text
Otvet2 = Text3.Text
Otvet3 = Text4.Text
Ball1 = Text5.Text
Ball2 = Text6.Text
Ball3 = Text7.Text

ну и открываем и записываем файл под именем " номер текущего вопроса.txt"

F = FreeFile
Open App.Path & " \" & NomVopros & ".txt" For Output As #F
Write #F, Vopros
Write #F, Otvet1, Otvet2, Otvet3
Write #F, Ball1, Ball2, Ball3
Close #F

Поскольку мы файл записали, значит он существует, устанавливаем наш флаг в положение False и конец процедуре.

Flag = False
End Sub

Остаются две кнопки Command2 и Command3, которые служат для передвижения по файлам (то бишь вопросам). Здесь я использую такой принцип: при нажатии кнопки вверх (Command2) имя файла, он же вопрос, уменьшается на единицу, а при нажатии кнопки вниз (Command3)- увеличивается на единицу. После этого происходит переход к процедуре Loading, которая загружает новый файл (вопрос). Однако здесь надо поставить определенные ограничения.

Для Command2:
Здесь все просто - мы проверяем, не меньше ли единицы наш номер билета. Если не меньше, то пожалуйста, уменьшаем номер на единицу и переходим к нашей процедуре Loading, а в противном случае ничего не делаем.

Private Sub Command2_Click()
If NomVopros > 1 Then
NomVopros = NomVopros - 1
Label1.Caption = " Вопрос № " & NomVopros
Loading
End If
End Sub

А вот с другой кнопкой Command3 дело обстоит несколько сложнее. Нам нужно, чтоб мы двигались вперед до тех пор, пока не дойдем до первого несуществующего файла (нам же нужно создавать новые впросы для тестирования) и на нем стоп! Для этого мы проверяем выполнение двух условий:
первое - хотим ли мы перейти к существующему файлу, или этот файл еще не создан? Это просто проверяется функцией Dir. Если мы просто переходим с последнего файла на несуществующий - это пожалуйста, а вот если мы уже на несуществующем и пытаемся двигаться дальше, то этого допустить никак нельзя, поэтому
второе - вот настал час переменной Flag. Так вот ее состояние таково, что показывает, на каком файле мы находимся перед переходом. Если Flag=False, значит мы стоим на нормальном файле и к несуществующему перейти вполне можно и мы увиличиваем на единицу номер файла. А вот если Flag=True, то значит мы уже достигли предела и двигаться дальше нельзя. Вот это код:

Private Sub Command3_Click()
If Dir(App.Path & " \" & NomVopros & ".txt") = " " And Flag = True Then
Exit Sub
Else
NomVopros = NomVopros + 1
Loading
End If
Label1.Caption = " Вопрос № " & NomVopros

End Sub

Здесь мы используем оператор Exit Sub, который позволит нам выйти из процедуры, не выполняя ее до конца. Хочу обратить твое внимание, что в коде программы в трех местах встречается одна и та же строка Label1.Caption = " Вопрос № " & NomVopros. Это недопустимая халатность. На работоспособности программы это, конечно не скажется, но с точки зрения программирования, каждая лишняя строчка (особенно если их тысячи) - это смерть разрабатчикам, т.е. нам. Попробуйте убрать ее и поставить в одном месте, где бы она " работала за троих". В исходнике это сделано. Далее для красоты ты можешь надписи на кнопках Command2 и Command3 заменить стрелочками. Я вот нарисовал их просто в Paint'e. Получилось два маленьких bmp-файла Up.bmp и Down.bmp. Чтобы поставит их в кнопку нужно свойство кнопки Style в состояние 1 - Graphical, очистить свойство Caption и в свойстве Picture нажать на кнопочку с тремя точечками. У тебя появиться окно " загрузить рисунок", где можно благополучно выбрать графический файлик. Это файлик сохранится в твоей программе и таскать его за собой больше не надо, но у меня в исходнике они лежат, как бы для примера.

Ну вот, с первой частью программы мы закончили. А теперь неплохо-бы сделать форму собственно для тестирования. Для этого в нашу программу надо добавить еще одну форму. Вверху общего окна VB надо нажать на кнопку со словом Проект и в выпавшем меню кликнуть по первой строке " Добавить форму". Тут же откроется окно " Добавить форму" и первая картинка называется " Форма". Выдели ее, если она не выделена и нажми кнопку в этом же окне " Открыть" (или там Open). И хрясть, перед вами новая форма Form2, ну точно такая же как и старая.

Сделаем все почти по аналогии с первой формой.

Кладем на Form2, Label1, Text1, Command1 и Frame1. После этого, сразу во Frame1, а не на форму кладем три радиокнопки Option1, Option2 и Option3. Вот и готово. Кнопка Command1 будет называться " Ответить". Теперь объявляем переменные, аналогичные первой форме

Option Explicit
Dim NomVopros As Variant
Dim Vopros As String
Dim Otvet1 As String
Dim Otvet2 As String
Dim Otvet3 As String
Dim Ball1 As Long
Dim Ball2 As Long
Dim Ball3 As Long
Dim F As Long

плюс еще SumAns для суммирования баллов






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