Visual Basic, .NET, ASP, VBScript
 

   
 

.NET разработчик, автор множества статей. В ранние годы (2001 - 2003) занимался разработкой на Visual Basic 6 и Active Server Pages, с 2003 года в основном занят разработкой корпоративного программного обеспечения на платформе Microsoft .NET (C#, VB.NET; ASP.NET, Silverlight). Личный блог: http://pavel.surmenok.com/

 
     
   
 

Введение

    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    Выделение будет видно, только если фокус находится на контроле.

   Пример можно скачать здесь.
 
     

   
   
     
  VBNet рекомендует