Контрол FlexGridPlus создан на основе контрола MSFlexGrid 5.0, поэтому включает почти все его свойства и методы плюс ряд новых.
Итак что нового:
TextEdit=true позволяет вводить текст в ячейки
Свойство FormatString позволяет задать формат вводимого текста. Если FormatString=1, то в ячейки можно вводить только числа и десятичные точки.
Свойство Scrool определяет будет ли сетка прокручиваться, если запрашиваемая ячейка не попадает в поле видимости. Например если строка 10 в данный момент не видна на экране (скажем последняя видимая строка 8), то написав Row=10 сетка прокрутиться и последней видимой строкой станет 10.
Свойство MouseRowColChange=1 позволяет осуществлять переход между ячейками не только при щелчке левой кнопки мыши, но и правой.
Функция Eval позволяет вычислять текстовые выражения. Например Eval("5+5")=10.
Теперь по поводу свойств отдельных ячеек
Раньше, чтобы установить свойство отдельной ячейки (например цвет фона у ячейки (1,1)) нужно было сделать так
With MSFlexGrid1
.Row=1
.Col=1
.CellBackColor = vbRed
End With
Теперь я добавил набор Cells и это можно сделать так:
FlexGridPlus1.Cells(1,1).BackColor=vbRed
Также я добавил набор Selection, чтобы работать с выделенной областью ячеек
Пользователь может выделить область мышкой или это можно сделать программно:
With FlexGridPlus1
' выделяем набор ячеек
.SelectRC 1, 1, 10, 10
' присваиваем цвет фона этим ячейкам
.Selection.BackColor=vbRed
' Возвращаем фокус в прежнее состояние
.EndSelect
End With
Также в набор Selection я добавил процедуры CopyToClipboard (скопировать в буфер), PasteFromClipboard (вставить из буфера, причем, если выделена только одна ячейка, то таблица вставляется полностью) и функцию Sum (возвращает сумму значений выделенных ячеек).
Ну а теперь по поводу баз данных:
В свойство DataColSize(index) записывается размер колонки (в символах) в базе данных. По умолчанию он принимается равным 20.
Свойство DataColName(index) содержит название колонок в базе данных. По умолчанию принимается "Поле1", "Поле 2" и т.д. Если сетка содержит фиксированную строку, то значение этого свойства будет приниматься из текста соответствующих колонок этой строки (конечно если эти колонки заполнены). Например, если FixedRows=1 и мы вводим TextMatrix (0,1)="Колонка", то и DataColName(1) автоматически примет значение "Колонка".
Функция IsTableExist(DataBaseName, TableName) определят существует ли указанная таблица в указанной базе данных. Если такой базы данных нет или нет такой таблицы, то возвращается false.
Процедура SaveToDatabase(DataBaseName, TableName) записывает всю таблицу в базу данных. Если указанной базы данных или таблицы не существует, то она их создает. Если таблица существует, но не существует некоторых колонок, то она просто их добавляет.
Процедура SaveColumnToDatabase(DataBaseName, TableName,Column) записывает в базу данных указанную колонку из FlexGridPlus.
Процедура LoadFromDatabase(DataBaseName, TableName) считывает таблицу из базы данных.
Процедура LoadColumnFromDatabase(DataBaseName, TableName, ColumnName, Column) считывает колонку из базы данных, где ColumnName - название колонки в базе данных, Column - номер колонки в FlexGridPlus.