Создание приложений ОС Windows средствами Visual Basic

       

Приложение «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, т.е. она становится отмеченной, и убирает это свойство у других команд, чтобы не было отмечено более одного пункта меню. Также устанавливается соответствующий названию команды меню код цвета.

Приложение «Paint»
   
Приложение «Paint»


Рис. 26                                                         Рис. 27

Напишите обработчик команды меню выхода из приложения:

Private Sub mnuExitYes_Click()

End

End Sub


Содержание раздела