- •Знакомство с visual basic
- •Практическая работа
- •Свойства, методы и события
- •Практическая работа
- •Переменные
- •Объявление переменных
- •Область видимости переменной
- •Ф орма 1
- •Форма 2
- •Математические операторы
- •Операторы сравнения
- •Логические операторы
- •Практическая работа
- •Обработка ошибок
- •Практическая работа
- •Самостоятельно
- •Условия и циклы
- •Самостоятельно
- •Использование списков и полей со списками
- •Удаление строк из списка
- •Ф орма Код (самостоятельно)
- •Массивы
- •Объявления массивов Объявление массива как одной переменной:
- •Заполнение массива
- •Динамический массив
- •Самостоятельно
- •Работа со строками
- •Определение длины строки
- •Усечение строк
- •Самостоятельно
- •Использование одной кнопки для включения / выключения
- •Конкатенация разнотипных строк
- •Коды символов в формате ascii
- •Окно ввода данных
- •Функция Val() и Slr()
- •Вывод информации на форму
- •Функция Format
- •Работа с графическим окном
- •Элемент управления RichTextBox
- •Объект Printer
- •Дополнительные возможности работы со строками Оператор Like и неопределенный поиск
- •Прочие строковые функции
- •Работа с файлами Чтение текстового файла (1 способ)
- •Запись текста в текстовый файл: Форма
- •Чтение текстового файла (2 способ)
- •Самостоятельно
- •Код (самостоятельно)
- •Простой файловый менеджер
- •'FileCopy не допускает файловые шаблоны, поэтому копирование по полному пути
- •Изменение регистра символов строки
- •Код (проанализировать программу, при необходимости – набрать и проверить работу)
- •Создание меню
- •Клавиши доступа и быстрые клавиши
- •Создание всплывающих меню
- •Разделение строк меню
- •Вырезание, копирование и вставка с помощью объекта Clipboard (буфера обмена)
- •Выделение текста в поле текста
- •Самостоятельно
- •Код (сначала попытайтесь самостоятельно написать код)
- •Использование элемента управления
- •Управляющие элементы Image List и Tool Bar
- •Создание дистрибутивного пакета – подготовка приложения к распространению
- •Время и таймеры
- •Использование одной кнопки для включения /выключения
- •Вычисление разницы между датами
- •Вычисление возраста
- •Код (проанализировать, при необходимости набрать проверить работу)
- •Самостоятельно
- •Код (сначала самостоятельно)
- •Подпрограммы и функции Использование процедур в Visual Basic
- •Самостоятельно
- •Определение точки входа в программу (запуск проекта с нужной формы)
- •Выбор подпрограммы Main() точкой входа проекта
- •' Оповещаем пользователя
- •Тестирование и отладка программ
- •Точка остановки программы
- •Наблюдение за несколькими переменными
- •Полосы прокрутки
- •Самостоятельно
- •Дополнительные компоненты active X
- •Создание дистрибутивного пакета – подготовка приложения к распространению
- •Время и таймеры
- •Использование одной кнопки для включения /выключения
- •Вычисление разницы между датами
- •Вычисление возраста
- •Код (проанализировать, при необходимости набрать проверить работу)
- •Самостоятельно
- •Форма Код (сначала самостоятельно)
- •Подпрограммы и функции Использование процедур в Visual Basic
- •Самостоятельно
- •Определение точки входа в программу (запуск проекта с нужной формы)
- •Выбор подпрограммы Main() точкой входа проекта
- •' Оповещаем пользователя
- •Понятие о базах данных
- •Терминология баз данных
- •Элемент управления данными
- •Свойства элемента управления данными
- •Методы элемента управления данными
- •Свойства набора данных
- •Методы набора записей
- •Практическая работа
- •Связывание элемента управления данными с базой данных
- •Что такое Recordset?
- •Поиск записей
- •Поиск дальше
- •Запросы
- •Компоненты языка sql
- •Самостоятельно
- •Создание отчетов с помощью crystal reports
- •Создание отчета
- •Объекты
- •Практика
- •Движение объектов
- •О связанных элементах управления Последовательность событий при загрузке формы
- •Отношения родитель/потомок между элементами управления данными
- •Практикум –
- •Создание базы данных своими руками
- •Какую технологию выбрать?
- •Элемент управления данными ado
- •Сортировка и объединение данных с помощью элемента управления Hierarchical FlexGrid
- •Проект «Школьный журнал» (пример создания и работы с базой данных)
- •Практическое задание Создать базу данных «Записная книжка»
- •Простейший графический редактор
- •При отпускании кнопки мыши
- •Dim n As Integer ‘счетчик новых записей в массиве
При отпускании кнопки мыши
а. Массив переопределяется на 1 элемент больше
б. координаты новой линии добавляются в массив
Чтобы не загромождать событие MouseMove, добавим отбельную процедуру перерисовки ReDraw(). Так же добавим процедуру добавления новых координат в массив MF() AddNew()
Полный код этой программы:
Dim AnchorX As Integer
Dim AnchorY As Integer
Dim OldX As Integer
Dim OldY As Integer
Dim MF() As Integer
Dim n As Integer ‘счетчик новых записей в массиве
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
AnchorX = X
AnchorY = Y
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.Line (AnchorX, AnchorY)-(X, Y)
Call AddNew(AnchorX, AnchorY, X, Y)
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button Then
Me.Line (AnchorX, AnchorY)-(OldX, OldY), &H8000000F
Me.Line (AnchorX, AnchorY)-(X, Y)
OldX = X
OldY = Y
ReDraw
End If
End Sub
Public Sub ReDraw()
For i = 1 To n
Me.Line (MF(1, i), MF(2, i))-(MF(3, i), MF(4, i))
Next i
End Sub
Public Sub AddNew(a, b, c, d)
n = n + 1
ReDim Preserve MF(4, n)
MF(1, n) = a
MF(2, n) = b
MF(3, n) = c
MF(4, n) = d
End Sub
Редактор для линий готов.
Теперь более серьезная задача.
Наш редактор может рисовать только одну линию. Сделайте так, чтобы редактор рисовал еще и прямоугольники. Напоминаю, команда рисования прямоугольника такая же как и линии, только после цвета ставится буква “b”:
Me.Line (AnchorX, AnchorY)-(X, Y), , B
Две запятые подряд – пропущен цвет (оставлен черный по умолчанию). Но запятые должны быть, даже если не указан цвет – таков синтаксис оператора.
Для переключения на рисование прямоугольника – сделайте кнопку на панели инструментов. Рисунок на кнопке – прямоугольник. Чтобы не искать такой рисунок, мы его сделаем сами. Для этого используем программу Imagedit. Вы можете ее скопировать себе на дискету. Она находится в каталоге Visual Basic’а.
З апустите программу:
Пункт меню File>New…
Выбрать пункт Icon(!)
Затем EGA/VGA 16 color…
Пункт меню Options>Grid (отобразить сетку)
З алейте весь рисунок цветом экрана (Screen) – стандартный сине-зеленый. Это сделает фон прозрачным для системной палитры Windows (увидите).
Затем черным нарисуйте прямоугольник.
Сохраните. Затем этот рисунок Вы вставите в проект на кнопку панели инструментов.
Далее.
Для того, чтобы указывать редактору, что рисовать – используют установку флага (переменную типа Boolean). Если флаг установлен (true) – рисовать прямоугольник. Сброшен (false) – рисовать прямую. Флаг устанавливается по нажатию кнопки. Кнопка должна иметь свойство оставаться нажатой (tbrCheck) при рисовании квадрата. Затем, для рисования линии, мы ее отжимаем щелчком мыши.
Сделайте это и запустите программу – она должна рисовать так, как надо, но при перерисовке (ReDraw) в прямоугольники вставляет линии. Даже если Вы процедуру перерисовки сделаете зависимой от состояния флага – это не поможет – флаг имеет одно состояние для всей перерисовки. Это будут либо линии, либо прямоугольники.
Чтобы перерисовка была правильной – надо при сохранении координат фигуры в массиве сохранять еще и состояние флага. Затем считывать координаты вместе с флагом.
При сохранении состояния флага в массиве помните, что массив хранит только однотипные элементы – сохранение в массиве типа Integer переменной типа Boolean вызовет ошибку! Поэтому перед записью флага в массив преобразуйте его в число (0 – false или 1 – true )
Программа (сначала самостоятельно)
Dim AnchorX As Integer
Dim AnchorY As Integer
Dim OldX As Integer
Dim OldY As Integer
Dim MF() As Integer
Dim n As Integer
Dim Flag As Boolean
Private Sub Form_Load()
Flag = False
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
AnchorX = X
AnchorY = Y
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Flag Then
Me.Line (AnchorX, AnchorY)-(X, Y), , B
Else
Me.Line (AnchorX, AnchorY)-(X, Y)
End If
Call AddNew(AnchorX, AnchorY, X, Y, Flag)
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button Then
If Flag Then
Me.Line (AnchorX, AnchorY)-(OldX, OldY), &H8000000F, B
Me.Line (AnchorX, AnchorY)-(X, Y), , B
Else
Me.Line (AnchorX, AnchorY)-(OldX, OldY), &H8000000F
Me.Line (AnchorX, AnchorY)-(X, Y)
End If
OldX = X
OldY = Y
ReDraw
End If
End Sub
Public Sub ReDraw()
For i = 1 To n
If MF(5, i) = 1 Then
Me.Line (MF(1, i), MF(2, i))-(MF(3, i), MF(4, i)), , B
Else
Me.Line (MF(1, i), MF(2, i))-(MF(3, i), MF(4, i))
End If
Next i
End Sub
Public Sub AddNew(a, b, c, d, e)
n = n + 1
ReDim Preserve MF(5, n)
MF(1, n) = a
MF(2, n) = b
MF(3, n) = c
MF(4, n) = d
If e Then
MF(5, n) = 1
Else
MF(5, n) = 0
End If
End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As ComctlLib.Button)
Flag = Not (Flag)
End Sub