
- •Институт информационных систем управления
- •Кандидат экономических наук, доцент в.А. Машурцев
- •Введение.
- •Глава 1. Vb 6.0 – среда разработки приложений.
- •1.1. Окна среды vb.
- •1.2. Файловая структура проекта.
- •1.3. Визуальное конструирование приложения.
- •1.4. Основные свойства формы и задание их значений.
- •1.5. Добавление форм к проекту и удаление форм из проекта.
- •1.6. Основные элементы управления и их свойства.
- •1.6.1. Элемент Label.
- •1.6.2. Элемент TextBox. Элемент TextBox (текстовое окно) предназначен для ввода исходной
- •1.6.3. Элементы HscrollBar и VscrollBar.
- •1.6.4. Элемент CommandButton.
- •1.7. События и методы.
- •1.8. Включение изображений в интерфейс пользователя.
- •1.8.1. Элемент Image. Элемент управления Image предназначен в основном для нанесе-
- •1.8.2. Элемент PictureBox.
- •1.9. Сохранение проекта.
- •Глава 2. Данные vb.
- •2.1. Типы данных.
- •2.1.1. Типы числовых данных.
- •2.1.1.1. Целочисленные данные.
- •2.1.1.2. Вещественные данные.
- •2.1.2. Типы нечисловых данных.
- •2.2. Объявление переменных и констант.
- •2.3. Область видимости переменных и констант.
- •2.4. Совместимость и преобразование типов данных.
- •2.5. Ввод исходных данных и вывод результатов обработки.
- •2.5.1. Окно сообщений. Оператор и функция MsgBox.
- •2.6. Форматирование вывода чисел.
- •Глава 3. Алгоритмизация вычислительных процессов.
- •3.1. Алгоритм и его свойства.
- •3.2. Типы вычислительных процессов.
- •3.3. Операторы vb.
- •3.4. Логические выражения.
- •3.5. Управляющие конструкции.
- •3.5.1. Операторы ветвлений.
- •3.5.1.1. Условный оператор.
- •3.5.1.2. Оператор выбора.
- •3.5.2. Операторы циклов.
- •3.5.2.1. Регулярный цикл.
- •3.5.2.2. Итерационные циклы.
- •3.5.2.3. Цикл перечислимого типа.
- •3.5.3. Элементы выбора.
- •3.5.3.1. Элемент CheckBox.
- •3.5.3.2. Элемент OptionButton.
- •3.5.4. Элемент управления и функция Timer.
- •3.5.5. Дата и время.
- •3.5.6. Оператор DoEvents.
- •3.5.7. Объединение кнопок в группы.
- •3.5.7.1. Элемент Frame.
- •3.6. Списки.
- •3.6.1. Элемент ListBox.
- •3.6.2. Элемент ComboBox.
- •Глава 4. Массивы.
- •4.1. Одномерные массивы.
- •4.2. Двумерные массивы.
- •4.3. Статические и динамические массивы.
- •4.4. Функция Array.
- •4.5. Генератор случайных чисел.
- •4.6. Функции lBound и uBound.
- •4.7. Массивы элементов управления.
- •4.8. Сопоставление массивов и списков.
- •4.9. Элемент msFlexGrid.
- •4.10. Упорядочение строк элемента msFlexGrid.
- •Глава 5. Процедуры и функции полоьзователя.
- •5.1. Создание стандартного модуля в приложении.
- •5.2.2. Вызов процедуры на выполнение.
- •5.3. Функции пользователя.
- •Глава 6. Обработка текстовой информации.
- •6.1. Изменение регистра символов в тексте.
- •6.2. Поиск заданной подстроки в тексте.
- •6.3. Выборка части текста.
- •6.4. Замена символов в тексте.
- •6.5. Удаление лишних пробелов из строки текста.
- •6.6. Инвертирование строк.
- •6.7. Преобразование текстовых строк в числа и наоборот.
- •6.8. Определение длины текста.
- •Глава 7. Создание меню пользователя.
- •Глава 8. Пользовательский тип данных.
- •8.1. Записи.
- •8.2. Сложные структуры данных.
- •Глава 9. Файлы.
- •9.1. Файлы последовательного доступа.
- •9.1.1. Открытие файла последовательного доступа.
- •9.1.2. Запись информации в файл.
- •9.1.3. Чтение информации из файла.
- •9.1.4. Закрытие файла.
- •9.2. Файлы произвольного доступа.
- •9.2.1. Открытие файла произвольного доступа.
- •9.2.2. Запись информации в файл.
- •9.4. Операции с файлами в vb.
- •9.5. Файловые операторы и функции обработки данных.
- •9.6. Сравнительный пример работы с файлами.
- •Глава 10. Обработка бд Access в среде vb.
- •10.1. Создание бд Access в среде vb.
- •10.2. Использование технологии Data Access Objects (dao).
- •10.2.1. Элемент управления Data.
- •10.2.2. Свойство Recordset элемента Data.
- •10.2.3. Программное связывание элементов.
- •10.3. Технология ActiveX Data Objects (ado).
- •10.3.1. Подключение ado Data к источнику данных (бд).
- •10.3.2. Подключение ado Data к источнику записей.
- •10.3.3. Элемент управления DataGrid.
- •10.4. Объекты ado.
- •10.4.1. Объект Connection.
- •10.4.2. Объект RecordSet.
- •10.4.3. Перемещение по набору записей.
- •10.4.4. Обращение к отдельным полям записи.
- •10.4.5. Выполнение запросов к бд.
- •10.5. Пример обработки бд в рамках технологии ado.
- •Глава 11. Обмен данными между приложениями.
- •11.1. Экспорт данных из бд в текстовый файл.
- •11.2. Технология внедрения и связывания (ole).
- •11.3. Связывание и внедрение на этапе design.
- •11.3.1. Связывание на этапе проектирования. Сразу же после размещения на форме элемента ole появляется
- •11.3.2. Внедрение на этапе проектирования.
- •11.4. Связывание и внедрение объектов на этапе run.
- •11.4.1. Свойства ole-контейнера.
- •11.4.2. Методы ole-контейнера.
- •11.4.3. События, связанные с ole-контейнером.
- •11.4.5. Внедрение объекта на этапе run. Для внедрения объектов в vb-приложение используется метод CreateEmbed. Синтаксис оператора, использующего этот метод:
- •Глава 12. Графические средства vb 6.
- •12.1. Управление цветом.
- •12.2. Изображения в интерфейсе проекта.
- •12.2.1. Наложение изображения на этапе проектирования. Наложение изображения на форму.
- •Восстановление утраченных графических файлов.
- •Наложение изображения на элемент PictureBox.
- •Наложение изображения на элемент CommandButton.
- •12.2.2. Наложение изображений на этапе выполнения.
- •12.3. Использование анимированных изображений.
- •12.3.1. Визуализация анимированных gif-файлов.
- •12.3.2. Визуализация на форме клипов.
- •12.4. Рисунки на графических объектах.
- •12.4.1. Элемент Shape.
- •12.4.2. Элемент Line.
- •12.5. Графические методы.
- •12.5.1. Методы для работы с изображением точки.
- •12.5.2. Метод Line.
- •12.5.3. Метод Circle.
- •12.6. Использование графики для решения отдельных задач.
- •12.6.1. Визуализация процесса сортировки элементов массива.
- •12.6.2. Принадлежность точки заданной области.
- •Приложение 1. Типовые алгоритмы обработки чисел.
- •Приложение 3. Алгоритмы обработки массивов.
- •Приложение 4. Примеры создания процедур и функций.
- •Приложение 5. Пример обработки типизированных файлов.
- •Приложение 6. Пример обработки бд Access в среде vb.
- •Оглавление
- •Глава 1. Vb 6.0 – среда разработки приложений. 4
- •Глава 2. Данные vb. 20
- •Глава 3. Алгоритмизация вычислительных процессов. 33
- •Глава 4. Массивы. 61
- •Глава 5. Процедуры и функции полоьзователя. 77
- •Глава 10. Обработка бд Access в среде vb. 110
- •Глава 11. Обмен данными между приложениями. 139
- •Глава 12. Графические средства vb 6. 150
4.9. Элемент msFlexGrid.
Элемент управления MSFlexGrid представляет собой сетку таблицы, в которую можно записывать элементы двумерного массива. Он предназначен только для выровненного по столбцам отображения таблицы. На панели элементов управления пиктограмма этого элемента отсутствует, поэтому его нужно вызвать, выполнив: “Проект \ Компоненты \ MSFlexGrid Control 6.0”. В окне возле этого компонента нужно поставить галочку и нажать ОК. В результате пиктограмма этого элемента появится на панели элементов управления. После этого он доступен для размещения на форме. Основные свойства элемента MSFlexGrid:
Таб. 4.8.
Свойство |
Значение свойства |
Name |
Имя элемента |
Height, Width |
Высота и ширина всего элемента |
Rows |
Количество строк в сетке, начиная с нулевой |
RowHeight |
Высота строк в сетке |
Cols |
Количество столбцов в сетке, начиная с нулевого |
ColWidth |
Ширина столбцов в сетке |
FixedRows |
Количество фиксированных строк |
FixedCols |
Количество фиксированных столбцов |
TextMatrix (i,j) |
Значение элемента, помещаемого в ячейку i-ой строки и j-ого столбца |
FormatString |
Устанавливает ширину столбцов и выравнивание для нулевых строк и столбцов |
Sort |
Упорядочивает строки таблицы |
В качестве префикса для имени используется msg.
Свойства Rows и Cols определяют количество строк и столбцов в сетке, включая нулевые строки и столбцы, которые называют строками и столбцами заголовков или фиксированными строками и столбцами. Они обрамляют сетку слева и сверху.
Свойства FixedRows и FixedCols определяют количества фиксированных строк и столбцов, соответственно. Число фиксированных строк и столбцов должно быть, по крайней мере, на 1 меньше соответственных значений свойств Rows и Cols. Если вообще фиксированные столбцы не нужны, то можно положить:
MSFG.FixedCols = 0.
Свойство TextMatrix(i,j) определяет значение содержимого ячейки i-ой строки и j-ого столбца. Это значение может иметь тип String или любой числовой тип. Свойства Height и Width определяют высоту и ширину всей сетки, а свойства RowHeight и ColWidth определяют высоту строк и ширину столбцов, соответственно.
Свойство FormatString устанавливает форматирование нулевых строк и столбцов. Это свойство содержит сегменты, отделяющиеся символом вертикальной черты (“|”). Текст между этими символами определяет заголовок столбца и может также содержать специальные символы выравнивания. Эти символы выравнивают текст слева (“<”), по центру (“^”) и справа (“>”). Ширина текста определяет ширину соответствующего данному сегменту столбца. Вся строка определяет “шапку” таблицы.
Форматная строка FormatString может содержать символ (“;”). Появление этого символа в форматной строке будет означать, что все следующие за ним символы будут интерпретироваться как заголовки строк таблицы.
Примеры:
-
установка заголовков столбцов таблицы:
FG.FormatString=”^ Код |< Название|^ План|> Выполнение”
В результате получим:
-
Код
Название
План
Выполнение
Рис. 4.1. Установка заголовков столбцов в элементе MSFlexGrid.
-
установка заголовков строк таблицы:
FG.FormatString= “; ФИО | Адрес | Телефон ”
В результате в фиксированном столбце получаем заголовки строк:
ФИО |
|
Адрес |
|
Телефон |
|
Рис.4.2. Установка заголовков строк в элементе MSFlexGrid.
-
установка заголовков строк и столбцов:
FG.FormatString s = “< ФИО |^ Таб. № |< Адрес |< Телефон ;” _
“| Сажин А.И. | Громов В.С. | Поляков И.П.“
Получаем таблицу:
-
ФИО
Таб. №
Адрес
Телефон
Сажин А.И.
Громов В.С.
Поляков И.П.
Рис. 4.3а. Установка заголовков столбцов и строк в MSFlexGrid.
Если бы требовалось, чтобы левая верхняя ячейка была пустой, то в строке s вместо “ФИО” нужно было бы набрать несколько пробелов:
FG.FormatString= “ |^ Таб. № |< Адрес |< Телефон ; “ _
“| Сажин | Громов | Поляков“.
Тогда получили бы:
-
Таб. №
Адрес
Телефон
Сажин А.И.
Громов В.С.
Поляков И.П.
Рис. 4.3б. Установка заголовков столбцов и строк в MSFlexGrid.
Из этих примеров видно, что при использовании свойства FormatString ширина нулевого столбца определяется наиболее длинным текстом в его строках, а ширины остальных столбцов зависят от длины текста в заголовках столбцов, т.е. в элементах нулевой строки.
Часто элемент MSFlexGrid используется для отображения на форме двумерных массивов (матриц). В этих случаях использовать свойство FormatString нецелесообразно, т.к. нет необходимости иметь разные ширины столбцов. При выводе числовой матрицы они должны быть одинаковы. Сделать это можно следующим образом:
Пусть требуется отобразить в элементе MSFlexGrid числовую матрицу размерности M x N. Приведем фрагмент соответствующего кода:
Dim m%, n%, a%(), i%, j%
m = InputBox(“Введите количество строк матрицы”)
n = InputBox(“Введите количество столбцов матрицы”)
ReDim a(1 To m, 1 To n)
FG.Rows = m +1: FG.Cols = n + 1
For i = 0 To m
FG.RowHeight(i) = FG.Height \ (m + 2)
Next i
For j = 0 To n
FG.ColWidth(j) = FG.Width \ (n + 2)
Next j
Делим на m + 2 и n + 2, чтобы появляющиеся иногда на элементе полосы прокрутки не загораживали последнюю строку и столбец. Теперь вводим матрицу и отображаем ее в нашем элементе FG:
For i = 1 To m
For j = 1 To n
a(i, j) = Int(Rnd*100)
FG.TextMatrix(i, j) = a(i, j)
Next j, i
Хорошо было бы еще пронумеровать строки и столбцы матрицы. Сделаем и это:
For i = 1 To m
FG.TextMatrix(i, 0) = i
Next i
For j = 1 To n
FG.TextMatrix(0, j) = j
Next j
Чтобы закрасить, например, синим цветом ячейку с координатами (i, j), а символы на ней вывести белым цветом, нужно выполнить:
FG.Row = i
FG.Col = j
FG.CellBackColor = vbBlue
FG.CellForeColor = vbWhite
Свойство CellBackColor возвращает или устанавливает цвет фона индивидуальных ячеек или области ячеек. Свойство CellForeColor возвращает или устанавливает цвет символов в индивидуальных ячейках или области ячеек. Эти свойства недоступны в режиме design. Чтобы установить цвета разных элементоы объекта MSFlexGrid, используются свойства BackColorBkg (цвет незанятого сеткой поля), BackColorFixed (цвет фона ячеек нулевых строк и столбцов), ForeColorFixed (цвет символов в нулевый строках и столбцах), BackColorSel и ForeColorSel (цвет фона и символов в выбранной ячейке, соответственно).
Чтобы установить один и тот же цвет фона всех ненулевых ячеек, используется свойство BackColor и, соответстенно, для символов - ForeColor.
Свойства MouseCol и MouseRow определяют координаты столбца и строки выбранной щелчком мышки ячейки элемента MSFlexGrid. Это позволяет создать процедуру заполнения данными или редактирования выбираемых мышкой ячеек:
Private Sub fg_Click()
Dim i%, j%, n%
i = fg.MouseRow
j = fg.MouseCol
n = InputBox(“Введите помещаемое в выбранную ячейку значение”)
fg.TextArray(i * fg.Cols + j)
End Sub
Можно еще создать функцию, определяющую ячейку, по которой щелкнули мышкой:
Function GetCellindex(row, col) As Integer
GetCellindex = row * fg.Cols + col
End Function
Теперь в процедуре Sub fg_Click() последнюю строку кода можно записать так:
fg.TextArray(GetCellindex(i,j)) = n
Использованное здесь свойство TextArray позволяет устанавливать или получать содержимое ячейки без программного задания значений свойств Row и Col. Оно имеет синтаксис:
object.TextArray(cellindex) [ = string ]
Здесь: cellindex – целочисленное выражение, определяющее ячейку для
чтения или записи данных;
string – строковое выражение, определяющее содержимое
выбранной ячейки.
Параметр cellindex для выбранной мышкой ячейки вычисляется по формуле: cellindex = row * fg.Cols + col.
Если требуется программно выбрать некоторый диапазон ячеек, то можно воспользоваться свойствами RowSel и ColSel. Они возвращают или устанавливают начальный или конечный столбец (или строку, соответственно) требующегося диапазона ячеек. Оба свойства доступны только в режиме run. Их синтаксис:
object.RowSel [ = value ]
object.ColSel [ = value ]
Здесь value – это выражение, принимающее значение типа Long и определяющее начальный столбец или строку диапазона ячеек. Свойства RowSel и ColSel можно использовать, чтобы выделить определенную область на элементе MSFlexGrid или прочесть размерности области, которую пользователь выбрал с помощью программного кода. Выбранной будет область между строками с номерами Row и RowSel и столбцами Col и ColSel. При этом RowSel может быть как выше, так и ниже Row, а ColSel – как левее, так и правее Col.
Чтобы выбрать блок ячеек, нужно сначала программно задать значения Row и Col, а затем RoeSel и ColSel.
Пример: следующий код позволяет выбрать диапазон ячеек в третьем столбце MSFlexGrid:
fg.Col = 3
fg.Row = 4: fg.RowSel = 7
Аналогично, код:
fg.Row = 5
fg.Col = 2: fg.ColSel = 7
выбирает диапазон ячеек в 5-ой строке.
Если задать:
fg.Row = 2: fg.Col = 2
fg.RowSel = 7: fg.ColSel = 5
то будет выделен блок ячеек, находящихся между указанными границами диапазонов строк и столбцов.
Не следует путать понятия Cell и Sel. Cell – это ячейка, а Sel – это сокращение от слова Selection (выбор).
Пример. Ввести элементы целочисленного двумерного массива и отобразить полученную матрицу в элементе MSFlexGrid. Ячейки элемента MSFlexGrid, в которых окажутся простые числа, закрасить красным цветом, а текст в них сделать белым. Откроем новый проект и разместим на форме элемент MSFlexGrid, которому дадим имя FG, и две командные кнопки. Для кнопки Command2 запишем код, завершающий работу программы:
Private Sub Command2_Click()
End
End Sub
Для кнопки Command1 запишем код, решающий нашу задачу:
Private Sub Command1_Click()
Dim m%, n%, a%(), i%, j%, k%, f As Boolean
m = InputBox(“Введите количество строк матрицы”)
n = InputBox(“Введите количество столбцов матрицы”)
ReDim a(1 To m, 1 To n)
FG.Rows = m +1: FG.Cols = n +1
For i = 0 To m
FG.RowHeight(i) = FG.Height \ (m + 2)
If i <> 0 Then FG.TextMatrix(i, 0) = i
Next i
For j = 0 To n
FG.ColWidth(j) = FG.Width \ (n + 2)
If j <> 0 Then FG.TextMatrix(0, j) = j
Next j
Randomize
For i = 1 To m
For j = 1 To n
a(i, j) = Int(Rnd*100)
FG.TextMatrix(i, j) = a(i, j)
Next j,i
Теперь среди элементов матрицы ищем простые числа и закрашиваем соответствующие им ячейки элемента MSFlexGrid:
For i = 1 To m
For j = 1 To n
f = True
For k = 2 To a(i, j) \ 2
If a(i, j) mod k = 0 Then f = False: Exit For
Next k
FG.Row = i: FG.Col = j
If f Then
FG.CellBackColor = vbRed
FG.CellForeColor = vbWhite
Else
FG.CellForeColor= vbBlack
End If
Next j, i
Запустив приложение на выполнение, получим: