Приложение «Paint»
В этом приложении рассматриваются способы рисования в форме и способы работы с меню. Внешний вид приложения показан на рис. 26.
Создайте новый проект, сохраните его как Paint1.vbp, а форму как Paint1.frm. В свойствах формы измените Caption на “Paint”, а в BackColor установите белый цвет.
Запустите редактор меню(Menu Editor, расположен в верхней панели инструментов, третий слева).
В поле Caption наберите «&Выход», в поле Name – «mnuExit». Нажмите кнопку Next. В списке снизу окна должна появится запись «&Выход». Знак амперсанда ставится перед тем символом, который будет выделен подчёркиванием, т.е. этот пункт меню может быть выбран при нажатии кнопки Alt и кнопки соответствующей подчёркнутой букве.
Теперь в поле Caption введите «&Да», в поле Name–«mnuExitYes». Для того чтобы получить вложенное меню, нажмите кнопку со стрелкой вправо, соответствующая строка в списке должна сместиться вправо. Нажмите кнопку Next. Введите команду меню «&Нет» с именем «mnuExitNo».
Введите команду меню «&Цвет» с именем «mnuColor». Это меню не должно быть вложенным в меню «Выход», поэтому нажмите кнопку со стрелкой влево. Введите в этом меню следующие вложенные команды: «&Красный» (mnuRed), «&Синий» (mnuBlue), «&Черный».
Для команды меню «&Черный», установите флажок Checked. Этот флажок обозначает будет ли данная команда меню «отмечена», т.е. будет ли возле неё стоять «галочка». В редакторе меню мы устанавливаем изначальное значение состояния меню, то которое будет при запуске. А при запуске активным устанавливается именно чёрный цвет.
Наберите в редакторе кода следующий код:
Option Explicit
Dim Button As Integer
Dim Shift As Integer
Dim x As Single
Dim Y As Single
Dim col As Integer
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single)
Paint1.CurrentX = x
Paint1.CurrentY = Y
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)
If Button = 1 Then
Line (Paint1.CurrentX, Paint1.CurrentY)-(x, Y), QBColor(col)
End If
End Sub
В первом участке кода объявляются необходимые переменные, такие как координаты x и y, цвет col, и другие служебные переменные.
Второй участок кода представляет собой обработчик события щелчка мыши внутри формы. При щелчке его координаты заносятся в свойства CurrentX и CurrentY формы Paint1, которые содержат координаты для начала рисования.
Третий участок это обработчик события перемещения курсора мыши над формой, причём в него передаётся переменная Button, которая содержит значение зависящее от того, нажата ли кнопка мыши, и если да, то какая. В данном случае проверяется состояние левой кнопки мыши, если она нажата, то чертится линия от текущих координат, до координат положения курсора. При этом текущие координаты устанавливаются в конечную точку линии. QBColor оператор передающий процедуре Line необходимый код цвета, в зависимости от условного кода, являющегося его аргументом.
Процедура рисования линии использована вместо процедуры установки цвета пикселя потому, что в противном случае при резком перемещении мыши получались бы отдельные точки вместо сплошной линии.
Добавьте обработчики событий выбора команд меню:
Private Sub mnuBlack_Click()
mnuBlue.Checked = False
mnuBlack.Checked = True
mnuRed.Checked = False
col = 0
End Sub
Private Sub mnuBlue_Click()
mnuBlue.Checked = True
mnuBlack.Checked = False
mnuRed.Checked = False
col = 1
End Sub
Private Sub mnuRed_Click()
mnuBlue.Checked = False
mnuBlack.Checked = False
mnuRed.Checked = True
col = 4
End Sub
Эти обработчики в зависимости от того, какая команда меню была выбрана устанавливают её в состояние Checked, т.е. она становится отмеченной, и убирает это свойство у других команд, чтобы не было отмечено более одного пункта меню. Также устанавливается соответствующий названию команды меню код цвета.
Рис. 26 Рис. 27
Напишите обработчик команды меню выхода из приложения:
Private Sub mnuExitYes_Click()
End
End Sub