Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ по работе с таблицей в Делфи.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
247.81 Кб
Скачать

Назначение элементов множества tGridOptions

Элемент

Описание

GoFixedVertLine

Колонки фиксированной зоны разделяются вертикальными линиями

GoFixedHorzLine

Ряды фиксированной зоны разделяются горизонтальными линиями

GoVertLine

Колонки рабочей зоны разделяются вертикальными линиями

GoHorzLine

Колонки рабочей зоны разделяются горизонтальными линиями

GoRangeSelect

Разрешено выделение нескольких ячеек. Игнорируется, если в множество включен элемент goEditing

GoDrawFocusSelected

Разрешено показывать ячейку, имеющую фокус ввода, так же, как выделенную ячейку

GoRowSizing

Разрешено ручное (мышью) изменение высоты рядов

GoColSizing

Разрешено ручное изменение ширины колонок

GoRowMoving

Разрешено ручное перемещение рядов (нажать левую кнопку мыши на фиксированной ячейке перемещаемого ряда и,

удерживая кнопку нажатой, перетащить ряд на новое место)

GoColMoving

Разрешено ручное перемещение колонок

GoEditing

Разрешено редактирование ячейки. элемент GoRowSelect. Редактирование начинается после щелчка мышью или нажатой клавиши <F2> и завершается при щелчке на другой ячейку или нажатой клавиши <Enter>

GoTabs

Разрешено обходить ячейки клавишей <Tab> (<Shift>+<Tab>)

GoRowSelect

Обязывает выделять сразу все ячейки ряда и запрещает редактирование ячеек

GoAlwaysShowEditor

Разрешено редактировать ячейку, имеющую фокус ввода: редактирование возможно после выделения ячейки клавишей <Tab> (<Shift>+<Tab>). Игнорируется, если не включен элемент goEditing

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

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

Рис. 1. Диалоговое окно программы Ввод и обработка массива Текст программы приведен в листинге 1.

 Листинг 1. Ввод и обработка массива целых чисел unit getar_; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls; type TForm1 = class(TForm) Label1: TLabel;StringGridl: TStringGrid;Button1: TButton;Label2: TLabel;

procedure ButtonlClick(Sender: TObject); private{ Private declarations } public{ Public declarations } end; var Form1: TForml ; implementation {$R *.dfm}

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

end.

После пробных запусков программы у вас должно возникнуть желание внести изменения в процесс ввода массива. Так, было бы неплохо, чтобы курсор автоматически переходил в следующую ячейку таблицы, например, в результате нажатия клавиши <Enter>. Сделать это можно при помощи процедуры обработки события onKeyPress. На эту же процедуру можно возложить задачу фильтрации вводимых в ячейку таблицы данных. В нашем случае надо разрешить ввод в ячейку только цифр. Текст процедуры обработки события OnKeyPress приведен в листинге 2. Следует обратить внимание на свойство Col, которое во время работы программы содержит номер колонки таблицы, в которой находится курсор. Это свойство можно также использовать для перемещения курсора в нужную ячейку таблицы. Однако нужно учитывать, что колонки таблицы, впрочем, как и строки, нумеруются с нуля.