Под вводом массива с помощью компонента StringGrid принято понимать процесс получения от пользователя (или из файла) во время работы программы значений элементов массива.

Самое простое решение задачи ввода элементов массива — для каждого элемента массива создать поле ввода. Но если требуется ввести достаточно большой массив, то такое решение неприемлемо. Представьте форму, к примеру, с десятью полями редактирования!   

      Под вводом массива с помощью компонента StringGrid принято понимать процесс получения от пользователя (или из файла) во время работы программы значений элементов массива.

Самое простое решение задачи ввода элементов массива — для каждого элемента массива создать поле ввода. Но если требуется ввести достаточно большой массив, то такое решение неприемлемо. Представьте форму, к примеру, с десятью полями редактирования!

Очевидно, что последовательность чисел удобно вводить в строку таблицы, где каждое число находится в отдельной ячейке. Ниже рассмотрим вариант с вводом массива с помощью компонента StringGrid. Значок компонента StringGrid находится на вкладке Additional.

Компонент StringGrid (см. рис.)

Компонент StringGrid

 

Компонент StringGrid представляет собой таблицу, ячейки которой содержат строки символов. В табл.1.1 перечислены некоторые свойства компонента StringGrid.

Таблица 1.1.Свойства компонента StringGrid

Свойство Определяет
  Name  Имя компонента. Используется в программе для доступа к свойствам компонента
 ColCount   Количество колонок таблицы
 RowCount  Количество строк таблицы
 Cells  Соответствующий таблице двумерный массив. Ячейка таблицы, находящаяся на пересечении столбца номер col и строки номер row определяется элементом cells [col, row]
 FixedCols  Количество зафиксированных слева колонок таблицы. Зафиксированные колонки выделяются цветом и при горизонтальной прокрутке таблицы остаются на месте
 FixedRows  Количество зафиксированных сверху строк таблицы. Зафиксированные строки выделяются цветом и при вертикальной прокрутке таблицы остаются на месте
&nbspOptions . goEditing ;  Признак допустимости редактирования содержимого ячеек таблицы. True — редактирование разрешено, False — запрещено
 Options . goTab  Разрешает (True) или запрещает (False) использование клавиши <Таb> для перемещения курсора в следующую ячейку таблицы
 Options . GoAlways-ShowEditor  Признак нахождения компонента в режиме редактирования. В случае если значение свойства False, то для того, чтобы в ячейке появился курсор, нужно начать набирать текст, нажать клавишу или сделать щелчок мышью
 DefaultColWidth  Ширину колонок таблицы
 DefaultRowHeight  Высоту строк таблицы
 GridLineWi-dth  Ширину линий, ограничивающих ячейки таблицы
 Left  Расстояние от левой границы поля таблицы до левой границы формы
 Top   Расстояние от верхней границы поля таблицы до верхней границы формы
 Height  Высоту поля таблицы
 Width   Ширину поля таблицы
 Font  Шрифт, используемый для отображения содержимого ячеек таблицы
 ParentFont  Признак наследования характеристик шрифта формы

В качестве примера использования компонента stringGrid для ввода массива рассмотрим программу, которая вычисляет среднее арифметическое значение элементов массива. Диалоговое окно программы приведено на рис. 

Компонент StringGrid

Компонент stringGrid используется для ввода массива, компоненты Label1 и Label2 — для вывода пояснительного текста и результата расчета͵ Buttoni — для запуска процесса расчета.

Добавляется компонент stringGrid в форму точно аналогично тому, как и другие компоненты. После добавления компонента к форме нужно выполнить его настройку в соответствии с табл. 1.2. Значения свойств Height и width следует при помощи мыши установить такими, чтобы размер компонента был равен размеру строки.

Таблица 1.2 настроек компонента StingGrig

 Свойство   Значение
 ColCount  5
 FixedCols  0
 RowCount  1
 DefaultRowHeight  24
 Height  24
 DefaultColWidth  64
 Width  328
 Options . goEditing  True
 Options . AlwaysShowEditing  True
 Options .goTabs  True

Листинг программы с использованием компонента StingGrig

procedure TForm1.Button1Click(Sender: TObject);
var
a:array[1..5] of integer;//массив
sum:integer;// сумма элементов
sr:real; // среднее арифметическое
i:integer;//индекс
begin
//Ввод массива
//считаем, что если ячйка пустая, то элемент ячейки равен 0
for i:=1 to 5 do
if Length(StringGrid1.Cells[i-1,0]) <>0
then a[i] := StrToInt(StringGrid1.Cells[i-1,0])
else a[i] := 0;
//Обработка массива
sum:= 0;
for i:=1 to 5 do
sum:= sum + a[i];
sr:= sum/5;
//
Label2.Caption:='Сумма элементов:' + IntToStr(sum) + #13 + 'Среднее арифметическое :' + FloatToStr(sr);

end;

end.

Для улучшения ввода массива с помощью компонента StingGrig добавим процедуру OnKeyPress, которая будет перемещать курсор в следующую ячейку при нажатии клавиши "Enter" и так же возложим на эту процедуру задачу фильтрации вводимых данных в ячейку таблицы только целых чисел. Листинг процедуры смотри ниже.

 procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  case  Key of
    #8,'0'..'9' :;// клавиша"Backspase"
    #13: // клавиша "Enter"
    if StringGrid1.Col< StringGrid1.ColCount - 1
    Then  StringGrid1.Col:= StringGrid1.Col  +1;
    else key:= Chr(0);//остальные символы запрещены

end;
end;

 

  Скачать исходник «Компонент StringGrid »:

Добавить комментарий


Защитный код
Обновить