AdvStringGrid, скрытые столбцы и строки

02.03.2012
AdvStringGrid, кроме всего прочего позволяет скрывать столбцы и строки в любом количество и любом месте таблицы и эту возможность трудно недооценить.

Зачем это надо?


Приведу простой пример, зачем же приходится скрывать строки или столбцы. Предположим вы считываете какие то данные из базы данных в таблицу 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];

...