AdvStringGrid, скрытые столбцы и строки
02.03.2012
Зачем это надо?
Приведу простой пример, зачем же приходится скрывать строки или столбцы. Предположим вы считываете какие то данные из базы данных в таблицу AdvStringGrid, в этой же таблице вы эти данные редактируете и сохраняете. Так вот, что бы при сохранении целостность данных не была нарушена, вы сохраняете данные с помощью установленных идентификаторов. Эти самые идентификаторы лучше всего хранить как раз в скрытых ячейках, конечно можно хранить и в обычных, но зачем их показывать пользователю?
Во вторых при сортировке или группировке данных в AdvStringGrid, идентификаторы тоже отсортируются нужным образом и вам не надо будет об этом заботиться, в отличие от случая если вы храните эти ID в массивах.
Основные методы скрытия
Рассмотрим основные методы для скрытия столбцов
AdvStringGrid.HideColumn(ColIndex: integer);AdvStringGrid.HideColumns(FromCol: integer; ToCol: integer);
И строк
AdvStringGrid.HideRow(RowIndex: integer);AdvStringGrid.HideRows(FromRow: integer; ToRow: integer);Первые скрывают столбец/строку с указанным индексом (индекс начинается с нуля), а вторые скрывают промежуток от индекса FromCol/FromRow до индекса ToCol/ToRow.
Основные методы "отмены скрытия"
//Показывает все скрытые столбцыВ комментариях к коду даны исчерпывающие объяснение.
AdvStringGrid3.UnHideColumnsAll;
//Показывает все скрытые строки
AdvStringGrid3.UnHideRowsAll;
//Показать строку с индексом ColIndex
AdvStringGrid3.UnHideColumn(ColIndex: integer);
//Показать строки с индексом от FromCol до ToCol
AdvStringGrid3.UnHideColumns(FromCol: integer; ToCol: integer);
//Показать столбец с индексом RowIndex
AdvStringGrid3.UnHideRow(RowIndex: integer);
//Показать столбцы с индексом от FromRow до ToRow
AdvStringGrid3.UnHideRows(FromRow: integer; ToRow: integer);
Читаем из скрытых ячеек
Теперь о вопросе, как же обратиться к скрытой ячейке?
Во первых, такие свойства как
AdvStringGrid.ColCount;возвращает количество только видимых строк/столбцов, стоит это запомнить.
AdvStringGrid.RowCount;
Во вторых, обратиться к нужной скрытой ячейке с помощью:
AdvStringGrid.Cells[i,j];не получится, тут нам на помощь придёт метод AllCells, имеющий идентичный синтаксис, но с его помощью можно без проблем обращаться к скрытым ячейкам.
AdvStringGrid.AllCells[i,j];
...