Введение
MSFlexGrid контрол используется для вывода табличных данных. Об этом контроле пойдёт речь в этой статье. Контрол MSFlexGrid допускает форматирование текста внутри ячеек и вставка в таблицу картинок. Возможна связь контрола с базой данных. Для подключения контрола MSFlexGrid к проекту откройте меню Project|Components и отметьте пункт "Microsoft FlexGrid control".
Доступ к содержимому ячеек
Количество строк и колонок указывается свойствами, соответственно, Rows и Cols. Отсчёт строк и колонок начинается с 0. Текущую строку указывает свойство Row, а текущую колонку свойство Col.
Debug.Print "Всего строк " & MSFlexGrid.Rows Debug.Print "Всего колонок " & MSFlexGrid.Cols Debug.Print "Текущая строка " & MSFlexGrid.Row Debug.Print "Текущая колонка " & MSFlexGrid.ColДоступ к содержимому текущей ячейки (которая выделена пользователем) осуществляется через свойство Text.
Debug.Print MSFlexGrid.Text MSFlexGrid.Text = "Привет!"Для доступа к содержимому произвольной ячейки используется свойство TextArray. Оно имеет один параметр - Index. Это индекс ячейки, содержимое которой нужно изменить или получить. Он вычисляется следующим образом. К номеру столбца ячейки прибавляется произведение ее номера строки на количество колонок, определяемое свойством Cols. Для расчёта индекса ячейки удобно использовать эту функцию:
Function GetCellIndex (MSFlexGrid As MSFlexGrid, row As Integer, col As Integer) GetCellIndex = row * MSFlexGrid.Cols + col End FunctionТакже можно добавлять строки с помощью метода AddItem.
MSFlexGrid.AddItem "Строка"Разделителем колонок служит vbTab.
MSFlexGrid.AddItem "Строка1" & vbTab & "Строка2" & vbTab & "Строка3"Удалять строки можно, используя метод RemoveItem. Первый параметр - index указывает, какую строку нужно удалить. Для первой строки index = 0.
MSFlexGrid.RemoveItem 2
Форматирование текста
В ячейках может содержаться текст, изображение, а может и то и другое. В MSFlexGrid возможно форматирование текста: выделение курсивом, подчёркиванием, полужирным, изменением цвета фона и текста, выравнивание текста, изменение шрифта и размера шрифта, стиль текста и др. Свойства, служащие для форматирования текста ячеек представлены в таблице.
Свойство | Тип данных | Значение по умолчанию | Описание |
CellAlignment | Integer | 0 | Выравнивание содержимого ячейки. |
CellBackColor | OLE_Color | 0 | Цвет фона ячейки. |
CellFontBold | Boolean | False | Задаёт жирное начертание. |
CellFontItalic | Boolean | False | Задаёт начертание курсивом. |
CellFontName | String | MS Sans Serif | Название шрифта. |
CellFontSize | Single | 8,25 | Размер шрифта. |
CellFontStrikeThrough | Boolean | False | Задаёт перечёркнутое начертание. |
CellFontUnderline | Boolean | False | Задает подчеркнутое начертание. |
CellFontWidth | Single | 0 | Ширина шрифта в точках. |
CellFontColor | OLE_Color | 0 | Цвет шрифта ячейки. |
Все эти свойства не доступны в Design time. Свойства применяются к текущей ячейке. Свойство CellAlignment может принимать значение одной из констант:
Константа | Значение | Описание |
flexAlignLeftTop | 0 | Слева сверху. |
flexAlignLeftCenter | 1 | Слева в центре. Это значение по умолчанию для ячеек, содержащих текст. |
flexAlignLeftBottom | 2 | Слева снизу. |
flexAlignCenterTop | 3 | В центре сверху. |
flexAlignCenterCenter | 4 | В центре ячейки. |
flexAlignCenterBottom | 5 | В центре снизу. |
flexAlignRightTop | 6 | Справа сверху. |
flexAlignRightCenter | 7 | Справа в центре. Это значение по умолчанию для ячеек, содержащих числа. |
flexAlignRightBottom | 8 | Справа снизу. |
flexAlignGeneral | 9 | Общее выравнивание. Слева в центре, если ячейка содержит текст и справа в центре, если ячейка содержит число. |
Вставка изображения в ячейку
В ячейку можно вставлять изображения. Для этого служит свойство CellPicture типа Picture. Можно вставлять изображения любого типа, с которыми умеет работать VB. Это Bitmap (bmp), Icon (ico), Windows Metafile (wmf), JPEG (jpg) и GIF (gif). Если вставить анимированное GIF изображение, то показывается только первый кадр. Изображение можно загрузить из файла, используя функцию LoadPicture или из другого объекта, например Picture или Image.
Set MSFlexGrid.CellPicture = LoadPicture ("C:\Windows\Облака.bmp") Set MSFlexGrid.CellPicture = Image1.PictureИзображение также можно выравнивать. Для этого служит свойство CellPictureAlignment. Оно может принимать значение одной из следующих констант:
flexAlignLeftTop = 0
flexAlignLeftCenter = 1
flexAlignLeftBottom = 2
flexAlignCenterTop = 3
flexAlignCenterCenter = 4
flexAlignCenterBottom = 5
flexAlignRightTop = 6
flexAlignRightCenter = 7
flexAlignRightBottom = 8
Что означают эти константы, думаю, понятно из их названия.
Заголовки строк и колонок
Заголовки строк и колонок в MSFlexGrid представляют собой нескроллируемую строку/колонку. Наличие заголовков строк и колонок устанавливается свойствами FixedRows и FixedCols соответственно. Содержимое заголовков определяется свойством FormatString. Следующий пример показывает, как установить заголовки колонок:
Dim s As String s = "<ID|Name|Email|Order" MSFlexGrid.FormatString = sЗаголовки строк определяются похожим образом:
Dim s As String s = ";Первый|Второй|Третий|Четвёртый" MSFlexGrid.FormatString = s
Цвет фона всех заголовков можно установить свойством BackColorFixed. Цвет шрифта заголовков определяет свойство ForeColorFixed. Заголовок - это группа ячеек, так что к нему применимы все те же способы форматирования содержимого, что и для других ячеек.
Ширина, высота строк и колонок
Ширина колонок устанавливается свойством ColWidth. Единственный параметр index указывает индекс колонки, ширину которой получаем или устанавливаем. Свойство имеет тип Long и устанавливается в твипах.
MsgBox MSFlexGrid.ColWidth (2) MSFlexGrid.ColWidth (2) = 1500
Высота колонок определяется свойством RowHeight, также имеющим тип Long и измеряющимся в твипах. В качестве параметра задаётся индекс строки.
MsgBox MSFlexGrid.RowHeight (34) MSFlexGrid.RowHeight (34) = 200
Также можно установить минимальную высоту строк. Это делается с помощью свойства RowHeightMin. Пользователь и сам может изменять высоту строк и ширину колонок. Но для этого нужно установить соответствующее значение свойства AllowUserResizing. Это свойство имеет тип AllowUserResizeSettings и может принимать значение одной из следующих констант:
Константа | Значение | Описание |
flexResizeNone | 0 | Пользователь не может изменять ни высоту строк, ни ширину колонок. Это значение устанавливается по умолчанию. |
flexResizeColumns | 1 | Пользователь может изменять только ширину колонок. |
flexResizeRows | 2 | Пользователь может изменять только высоту строк. |
flexResizeBoth | 3 | Пользователь может изменять и высоту строк, и ширину колонок. |
Свойства, определяющие внешний вид контрола
В MSFlexGrid достаточно гибко регулируется внешний вид. Очень много свойств, определяющих цвета разных элементов контрола. Все они имеют тип OLE_Color. Они перечислены в этой таблице:
Свойство | Значение по умолчанию | Описание |
BackColor | &H80000005& | Цвет фона части контрола, занятой данными (все ячейки). |
BackColorBkg | &H00808080& | Цвет остальной части контрола. |
BackColorFixed | &H8000000F& | Цвет фона заголовков. |
BackColorSel | &H8000000D& | Цвет выделения. |
ForeColor | &H80000008& | Цвет шрифта. |
ForeColorFixed | &H80000012& | Цвет шрифта заголовков. |
ForeColorSel | &H8000000E& | Цвет шрифта выделенной части. |
GridColor | &H00C0C0C0& | Цвет линий, разделяющих ячейки. |
GridColorFixed | &H00000000& | Цвет линий, разделяющих ячейки заголовка. |
Другие свойства, определяющие вид контрола:
Свойство | Тип данных | Значение по умолчанию | Описание |
Appearance | AppearanceSettings | flex3D | Наличие 3D эффектов. |
BorderStyle | BorderStyleSettings | flexBorderSingle | Наличие окантовки. |
GridLines | GridLineSettings | flexGridFlat | Тип линий, разделяющих ячейки. |
GridLinesFixed | GridLineSettings | flexGridInset | Тип линий, разделяющих ячейки заголовка. |
GridLineWidth | Integer | 1 | Толщина линий. |
HighLight | HighLightSettings | flexHighlightAlways | Определяет, при каких условиях будет видно выделение ячеек цветом. |
ScrollBars | ScrollBarsSettings | flexScrollBarBoth | Наличие вертикальных и горизонтальных полос прокрутки. |
TextStyle | TextStyleSettings | flexTextFlat | Стиль текста. |
TextStyleFixed | TextStyleSettings | flexTextFlat | Стиль текста в заголовке. |
Свойство GridLines и GridLinesFixed могут принимать значения одной из констант:
Константа | Значение | Описание |
flexGridNone | 0 | Нет линий. |
flexGridFlat | 1 | Обычные 2D линии. |
flexGridInset | 2 | Вдавленные линии. |
flexGridRaised | 3 | Приподнятые линии. |
Свойство HighLight может принимать значение одной из следующих констант:
Константа | Значение | Описание |
flexHighlightNever | 0 | Выделение ячеек не будет видно. |
flexHighlightAlways | 1 | Выделение ячеек видно всегда. |
flexHighLightWithFocus | 2 | Выделение будет видно, только если фокус находится на контроле. |