Работа с табличными данными — не редкость в деле программиста. Такие языки программирования, как Delphi хорошо продуманы в этом смысле и имеют множество плюсов именно в работе с таблицами. В одной из статей мы рассказывали вам, что при работе в Delphi можно обратиться к программе Excel пакета Microsoft Office, чтобы открыть в теле разрабатываемой программы необходимую уже существующую таблицу (иначе говоря - книгу Excel). Теперь мы поговорим о том, каким образом создаётся новый собственный элемент с табличными данными Delphi - таблица.
Для того, чтобы вывести в программе табличные данные в отдельной организованной форме, пользователю предлагается воспользоваться специально разработанных для этого компонентом StringGrid. Название этого компонента сразу указывает на то, каким именно данные могут содержаться в ячейках такой таблицы. В первую очередь это, конечно же, данные типа String. Помимо String-данных там могут находиться и некоторые графические элементы Delphi.
Любая таблица StringGrid имеет вид совокупности выделенных серым цветом ячеек двух цветов. Первый вид ячеек имеет название FixedCols и обозначает зафиксированные ячейки, обладающие свойствами заголовков. Такие ячейки зафиксированы и недоступны для внесения большого количества изменений. Следующий вид — FixedRows. Эти ячейки представляют собой обычные белые блоки. В ячейки FixedCols невозможно внести какие-либо изменения: их редактирование возможно только через программный код Delphi. Однако, существует возможность редактирования обычной ячейки FixedRows. Это можно сделать с помощью одного из значений свойства Options.
Как компонент, представляющий собой Delphi-таблицу, StringGrid владеет особенным качеством: в его возможности включено адресация отдельных ячеек по соответствующим номерам столбцов и строк. Допустим, у нас есть ячейка с табличными координатами (i, j). Координата i является номером столбца, а координата j — номером строки. Описываться подобная ячейка будет следующим образом:
StringGrid1.Cells[i, j]
Следует заметить, что отсчёт номеров столбцов и строк в подобных записях всегда начинается с нуля.
Когда вы выделяете какую-либо ячейку в таблице Delphi, её номер столбца и номер строки выглядят следующим образом:
StringGrid1.Col
StringGrid1.Row
Отсюда следует, что адрес содержимого ячейки, которая выделена в данный момент, будет иметь следующий вид:
S:=StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row];
Так как составление подобных строк неоправданно долгий и утомительный процесс (ведь вам будет необходимо проделать это не один раз!), существует активно используемый большинством программистов Delphi оператор присоединения with, который приводит ранее описанный адрес к более компактному виду:
with StringGrid1 do
S:=Cells[Col, Row];
Ещё одна хитрость, которая упростит вашу работу с адресами, это задание более короткого имени, состоящего, к примеру, всего из двух латинских букв.