Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Занесение информации из базы данных в StringGrid.Содержание книги Поиск на нашем сайте
Для ввода массива удобно использовать компонент StringGrid. Значок компонента StringGrid находится на вкладке Additional (рис. 5.2). Рис. 5.2. Компонент StringGrid Компонент StringGrid представляет собой таблицу, ячейки которой содержат строки символов. В табл. 5.1 перечислены некоторые свойства компонента StringGrid. Таблица 5.1. Свойства компонента StringGrid
В качестве примера использования компонента stringGrid для ввода массива рассмотрим программу, которая вычисляет среднее арифметическое значение элементов массива. Диалоговое окно программы приведено на рис. 5.3. Компонент stringGrid используется для ввода массива, компоненты Label1 и Label2 — для вывода пояснительного текста и результата расчета, Buttoni — для запуска процесса расчета. Рис. 5.3. Диалоговое окно программы Ввод и обработка массива Добавляется компонент stringGrid в форму точно так же, как и другие компоненты. После добавления компонента к форме нужно выполнить его настройку в соответствии с табл. 5.2. Значения свойств Height и width следует при помощи мыши установить такими, чтобы размер компонента был равен размеру строки. Текст программы приведен в листинге 5.2. Таблица 5.2. Значения свойств компонента StringGrid1
Листинг 5.2. Ввод и обработка массива целых чисел 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 приведен в листинге 5.3. Следует обратить внимание на свойство Col, которое во время работы программы содержит номер колонки таблицы, в которой находится курсор. Это свойство можно также использовать для перемещения курсора в нужную ячейку таблицы. Однако нужно учитывать, что колонки таблицы, впрочем, как и строки, нумеруются с нуля. Листинг 5.3. Процедура обработки события OnKeyPress procedure TForm1.StringGridlKeyPress(Sender: TObject; var Key: Char); Begin case Key of #8,'0'..'9':; // цифры и клавиша <Backspace> #13: // клавиша <Enter> if StringGridl.Col < StringGridl.ColCount — 1 then StringGridl.Col:= StringGridl.Col + 1; else key:= Chr(0); // остальные символы запрещены end; end; Если нужно ввести массив дробных чисел (a: array [1..5] of real), то процедура обработки события OnKeyPress несколько усложнится, т. к. помимо цифр допустимыми символами являются символ-разделитель (запятая или точка — зависит от настройки Windows) и минус. С целью обеспечения некоторой дружественности программы по отношению к пользователю можно применить трюк: подменить вводимый пользователем неверный разделитель верным. Определить, какой символ-разделитель допустим в текущей настройке Windows, можно, обратившись к глобальной переменной Decimaiseparator. В листинге 5.4 приведен текст модуля приложения ввода и обработки массива дробных чисел. Процедура обработки события OnKeyPress обеспечивает ввод в ячейку таблицы только допустимых при записи дробного числа символов. Листинг 5.4. Ввод и обработка массива дробных чисел unit. getar_1; interface Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls; Type TForm1= class(TForm) Label1: TLabel; StringGrid1: TStringGrid; Button1: TButton; Label2: TLabel; procedure Button1ClicktSender: TObject); procedure StringGridlKeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; Var Form1: TForm1; Implementation {$R *.dfm} procedure TForm1.ButtonlClick(Sender: TObject); var a: array[1..5] of real; // массив suram: real; // сумма элементов sr: real; // среднее арифметическое i: integer; // индекс Begin // ввод массива // считаем, что если ячейка пустая, то соответствующий // ей элемент массива равен нулю for i:= 1 to 5 do if Length(StringGridl.Cells[i-l,0])<>0 then a[i]:= StrToFloat(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:= 'Сумма элементов: ' + FloatToStr(summ) + #13+ 'Среднее арифметическое: ' + FloatToStr(sr); end; '/ Функция обеспечивает ввод в ячейку только допустимых символов procedure TForm1.StringGridlKeyPress(Sender: TObject; var Key: Char); Begin Case Key of #8,'0'..'9':; // цифры и <Backspace> #13: // клавиша <Enter> if StringGridl.Col < StringGridl.ColCount - 1 then StringGridl.Col:= StringGridl.Col + 1; '.',',': // разделитель целой и дробной частей числа Begin if Key <> DecimalSeparator then Key:= DecimalSeparator; // заменим разделитель // на допустимый if Pos(StringGridl.Cells[StringGridl.Col,0], DecimalSeparator) <> 0 then Key:= Chr(O); // запрет ввода второго // разделителя end; ' -': // минус можно ввести только первым символом, // т. е. когда ячейка пустая if Length(StringGrid1.Cells[StringGrid1.Col, 0]) <>0 then Key:= Chr(0); else // остальные символы запрещены key:= Chr(0); end; end; End.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-08; просмотров: 548; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.89.89 (0.008 с.) |