Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Основные свойства компонента StringGrid
Таблица StringGrid состоит из выделенных серым цветом FixedCols и FixedRows - зафиксированных ячеек-заголовков, и обычных, белых ячеек. Содержимое Fixed ячеек недоступно для редактирования, и меняется только программно. Для установки количества фиксированных ячеек можно изменить значение свойств FixedCols и FixedRows в окне свойств Object Inspector. Или поменять количество фиксированных строк и столбцов программно, написав в коде программы команды StringGrid1-> FixedCols=1; // устанавливает 1 фиксированный столбец StringGrid1-> FixedRows=1; // устанавливает 1фиксированную строку Количество строк в StringGrid равно StringGrid1-> RowCount. Количество столбцов в StringGrid равно StringGrid1-> ColCount Общее количество строк и столбцов в таблице можно установить вручную в окне Object Inspector, отредактировав свойства RowCount и ColCount, а можно изменить программно в ходе выполнения программного кода, написав следующие команды: StringGrid1-> RowCount=5 //устанавливаем общее кол-во строк равное 5 StringGrid1-> ColCount=7 //устанавливаем общее кол-во столбцов равное 7 Эти свойства доступны как для записи (при установке количества строк и столбцов), так и для чтения (при проверке размер таблицы). Если ячейки не помещаются в таблице, появляются полосы прокрутки. За многие свойства компонента StringGrid отвечает свойство Options. В Инспекторе Объектов Options - это раскрывающийся список, представляющий собой элементы данного множества. Если значение элемента равно True, то он присутствует в множестве, если False - то нет.
Как следует из таблицы, за возможность редактировать содержимое ячеек с клавиатуры отвечает элемент goEditing свойства-множества Options. В Инспекторе Объектов установите его значение в True. Чтобы управлять этой возможностью программно, нужно включить или исключить из множества данный элемент: StringGrid1-> Options< < goEditing; //Включаем редактирование, //другие элементы не трогаем StringGrid1-> Options=StringGrid1-> Options[goEditing]; //Выключаем редактирование, другие элементы не трогаем StringGrid1-> Options=[goEditing, goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRowSelect]; //Задаём список необходимых элементов Если элементы заданы списком, это аналогично присвоению в Инспекторе Объектов этим элементам значения True, остальным - False. Компонент StringGrid имеет возможность адресации каждой отдельной ячейки по номеру столбца и строки. Содержимое ячейки (i, j), где где i - номер столбца, j - номер строки, имеет вид: StringGrid1-> Cells[i][j] и доступно как для чтения, так и для записи. Например: StringGrid1-> Cells[i][j]=”Hello”; - записывает слово в ячейку с координатами I и j. A=StringGrid1-> Cells[i][j]; - считывает содержимое ячейки с координатами I и j в переменную A. Номера столбцов (i) и строк (j) отсчитываются от 0. Выделенная ячейка таблицы имеет: номер столбца: StringGrid1-> Col номер строки: StringGrid1-> Row поэтому содержимое выделенной ячейки будет адресоваться так: S=StringGrid1-> Cells[StringGrid1-> Col][StringGrid1-> Row]; Ячеек в таблице, как правило, много, и в рамках компонента видна только часть из них. Если ячейки не помещаются в таблице, появляются полосы прокрутки. При прокручивании: StringGrid1-> LeftCol Номер столбца, видимого самым левым StringGrid1-> TopRow Номер строки, видимой самой верхней StringGrid1-> VisibleColCount Количество столбцов, видимых в рамках таблицы StringGrid1-> VisibleRowCount Количество строк, видимых в рамках таблицы
У таблицы StringGrid также есть свойство и для управления размером ячеек.Для всех ячеек DefaultRowHeight - высота строк по умолчанию DefaultColWidth - ширина столбцов по умолчанию Эти значения ширины и высоты принимают все новые ячейки. При необходимости индивидуально установить ширину и высоту столбцов и строк соответственно, пользуемся свойствами RowHeights[i] - массив, содержащий высоты строк с номером i ColWidths[i] - массив, содержащий ширины столбцов с номером i Все эти свойства можно настроить в обработчике события OnCreate формы, так же как и надписи заголовков, располагающиеся в строках и столбцах " фиксированной" зоны таблицы. В результате таблица появляется уже в " настроенном" виде. Так как таблица StringGrid, в отличие от, например, компонента ListBox, не имеет метода для очистки содержимого сразу всех ячеек, то для удаления внесённых в таблицу ранее данных приходится очищать каждую ячейку отдельно. Делается это двумя вложенными циклами for, пробегающими по столбцам и строкам: int i, j; { for (i=1; i< StringGrid1-> RowCount; i++) //Заголовки строк не трогаем for (j=1; j< StringGrid1-> ColCount; j++) //Заголовки столбцов не трогаем StringGrid1-> Cells[j][i]=” ”; } Хотя, есть метод для очищения содержимого целого столбца или строки: StringGrid1-> Cols[i]-> Clear(); //Очищается столбец с номером i StringGrid1-> Rows[i]-> Clear(); //Очищается строка с номером i Очевидно, очищение этими методом происходит гораздо быстрее. Однако будут очищены и ячейки фиксированной зоны, содержащие, например, названия строк и столбцов, которые удалять не нужно. Их после очистки нужно просто " написать" заново, на глаз эта манипуляция совершенно незаметна. Для очистки всей таблицы достаточно последовательно очистить только строки или только столбцы: int i, j; { for (i=1; i< StringGrid1-> RowCount; i++) //Заголовки столбцов не трогаем { StringGrid1-> Rows[i]-> Clear(); StringGrid1-> Cells[0][i]=" Заголовок строки i"; } }
Определение суммы всех ячеек int summa = 0; for(int i = 1; i < StringGrid1-> RowCount; i++){ // число строк for(int j = 1; j < StringGrid1-> ColCount; j++){ // число стобцов summa += StringGrid1-> Cells[i][j].ToInt(); } } Label1-> Caption = summa; // Вывод суммы всех чисел Динамическое создание компонента StringGrid и установка его размеров TStringGrid *Grid = new TStringGrid(GridForm); Grid-> ColCount = Count + 1; Grid-> RowCount = Count + 1;
// заполняем StringGrid значениями if (Values! = NULL) for (int i = 0; i < Count; i++) Grid-> Cells[i + 1][i + 1] = Values[i];
Среди множества событий компонента StringGrid следует отметить событие OnSelectСell, возникающее в момент выбора пользователем ячейки. В обработчик этого события передаются целые параметры ACol и ARow — столбец и строка выделенной ячейки, и булев параметр CanSelect — допустимость выбора. Параметр CanSelect можно использовать для запрета выделения ячейки, задав его значение false. А параметры ACol и ARow могут использоваться для какой-то реакции программы на выделение пользователя. Например, оператор Label1-> Caption='Выбрана ячейка '+IntToStr(ARow) + ': '+IntToStr(ACol); выдаст в метку Label1 номер выбранной ячейки. А оператор Label1-> Caption=StringGrid1-> Cells[ACol, ARow]; выведет в ту же метку текст выделенной ячейки. Закрашивание отдельной ячейки Скрыть столбец таблицы: StringGrid1-> ColWidths[Index] = -1; //Index - порядковый номер столбца Популярное:
|
Последнее изменение этой страницы: 2017-03-08; Просмотров: 969; Нарушение авторского права страницы