Организация ввода и вывода данных
Для организации диалога с пользователем и вывода сообщений используются различные компоненты из библиотеки Delphi.
Для получения вводимого значения можно использовать функцию InputBox. Эта функция имеет 3 строковых параметра – для заголовка окна, подписи к строке ввода и значения, которое помещается в строку. Результат этой функции – введенная строка.
Str:=InputBox(‘Окно ввода', ‘Сообщение’,’ Ввод данных’).
При выполнении в программе следующего оператора присваивания
Str:=InputBox('Ввод исходных данных', 'Введите радиус',' 0')
на экране появляется окно, изображенное на рис.5.
Рис.5. Окно InputBox
Строка ввода Edit также может использоваться для ввода данных. Введенные значения заносятся в свойство text. Это свойство имеет строковый тип. Следовательно, после ввода данных Edit1.text хранит в строковом представлении то, что было введено в строку ввода Edit
Для преобразования строки в число используются функции Object Pascal - StrToFloat и StrToInt. Например, a:=StrToFloat(Edit1.text), где а - переменная вещественного типа, с:=StrToInt(Edit1.text), где с- переменная целого типа.
Метки Label предназначены для размещения на экране текстовой информации. В частности, их можно использовать для вывода результатов работы программы.
Label1.caption:=’Результат вычислений ‘+FloatToStr(S).
Так как свойство caption имеет строковый тип, то необходимо для вывода чисел преобразовать их в переменную строкового типа.
Функции FloatToStr(a) и IntToStr(c) предназначеныдля преобразования в строку, соответственно, вещественного или целого числа.
Рис.6. Размещение компонентов Edit и Label на форме
Само по себе внесение данных в строку ввода не приведет к их обработке. Для того, чтобы это произошло, нужно использовать компонент Button– кнопку. Этот компонент предназначен для формирования события при нажатии на эту кнопку. На рис.7 представлена форма с кнопкой Button1. Свойство Caption этой кнопки – ‘Вычисление квадратного корня'.
Рис.7. Форма с кнопкой Button
Для кнопки Button событие OnClick является событием по умолчанию, поэтому, для создания заготовки обработчика события, достаточно выполнить двойной щелчок по кнопке Button. В результате окно редактора кода станет активным и будет содержать заготовку обработчика события TForm1.Button1Click. Между словами begin – end следует поместить операторы, которые будут выполняться при нажатии кнопки.
procedure TForm1.Button1Click(Sender: TObject);
Var st:string;
x:real;
begin
st:= edit1.text;
x:=sqrt(StrToFloat(st));
Label2.caption:='Результат ='+FloatToStr(x);
end;
Результат работы программы вычисления квадратного корня представлен на рис.8.
Рис.8. Окно программы
Для отображения на экране списка значений в Delphi предназначен компонент ListBox. Этот компонент имеет в своем составе объект-список, содержащий набор строк с ассоциированными с ними произвольными объектами. Для того, чтобы отобразить последовательно на экране те данные, которые вводятся в строку ввода можно выполнить следующие операторы:
ListBox1.Items.Add(Edit1.Text);
Если вводимые данные нужно запомнить в массиве целых чисел, то выполняются следующие операторы:
i:=i+1;
a[i]:=StrToInt(Edit1.Text);
Установку начальных значений можно задать в обработчике события OnCreate для формы, которое возникает в момент создания формы. Размещение операторов в этом обработчике во многих случаях эквивалентно размещению операторов в секции инициализации модуля. Заготовка обработчика этого события создается при выполнении двойного щелчка по форме Form1.
ListBox1.Clear;
Edit1.Clear ;
ТаблицаStringGrid (таблица строк) предназначена для отображения двумерной информации. Каждая ячейка может содержать символьную строку. Значок таблицы находится на дополнительной (Additional) странице палитры компонентов
.
Рис.9. Страница Additional палитры компонентов
Нумерация строк и столбцов таблицы начинается с 0. Координаты каждой ячейки таблицы задаются парой чисел. Первое число – номер столбца, второе – номер строки. Например, ячейка с номером (3,5) расположена в четвертом столбце и шестой строке.
Основные свойства таблицы:
Name–имя компонента. Используется в программе для доступа к свойствам компонента.
Cells – соответствующий таблице двумерный строковый массив.
Cells[i,j] – элемент, который находится в столбце i и в строке j.
ColCount – число столбцов в таблице.
RowCount - число строк в таблице.
FixedCols– число фиксированных столбцов. По умолчанию –1.
FixedRows -число фиксированных строк. По умолчанию –1.
Если зафиксировать необходимое количество первых строк и столбцов, то можно задавать заголовки, постоянно присутствующие в окне компонента, в том числе при горизонтальном и вертикальном скроллинге.
DefaultDrawing – если свойство имеет значение True, то прорисовка ячеек при рисовании таблицы будет происходить автоматически, в противном случае нужно создать свои средства отображения.
DefaultColWidth– задает исходную ширину всех столбцов.
DefaultRowHeight- задает исходную высоту всех строк.
Col – номер столбца, в котором находится активная ячейка. Свойство доступно только на этапе выполнения программы
Row -номер строки, в которой находится активная ячейка. Свойство доступно только на этапе выполнения программы.
Заполнить таблицу можно с помощью генератора случайных чисел:
procedure TForm1.Button1Click(Sender: TObject);
VAR i,j:integer;
begin
randomize;
for i:=0 to 4 do
for J:=0 to 3 do
StringGrid1.Cells[j,i]:=inttostr(round(random(10)));
end;
Приведенный фрагмент программы позволяет заполнить таблицу из 4 столбцов и 5 строк целыми числами в диапазоне 0-9.
Для определения поведения таблицы используется свойство Options. Оно содержит различные флаги. Например, флаг goEditing позволяет редактировать ячейки таблицы, то есть на этапе выполнения программы разрешается вводить и редактировать данные в ячейке. Эти свойства следует задать в Инспекторе Объектов (рис.10). На вкладке Параметры указано количество зафиксированных вверху строк – 1, зафиксированных колонок –0.
Рис.10.Инспектор Объектов таблицы строк tab1.
Пример.В программе заполнить таблицу, которая содержит сведения о наименовании товара, его цене и количестве. Выполнить вычисление общей стоимости для каждого товара при нажатии кнопки “вычислить” и сортировку по стоимости при нажатии кнопки “сортировать”.
Вначале необходимо поместить на форму таблицу , 2 кнопки и задать их свойства (рис.11).
Рис. 11. Таблица StringGrid и кнопки на форме
Присвоим таблице имя tab1(свойство name). В таблице зафиксирована верхняя строка (выделена серым цветом). В эту строку поместим заголовки колонок. Во время создания формы приложения установить значения элементов массива Cells нельзя, так как элементы массива доступны только во время работы программы. Поэтому значения элементов, соответствующих первой строке таблицы, устанавливает процедура обработки события OnActivate, которое происходит во время активизации формы приложения:
procedure TForm1.FormActivate(Sender: TObject);
begin
tab1.Cells[0,0]:='товар';
tab1.Cells[1,0]:='цена';
tab1.Cells[2,0]:='количество';
tab1.Cells[3,0]:='сумма'
end;
Процедура обработки исходной таблицы запускается в результате щелчка по кнопке «вычислить» (Button1). Текст той процедуры:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
r:real;
begin
For i:= 1 to 4 do
begin
r:=StrToFloat(tab1.Cells[1,i])* StrToFloat(tab1.Cells[2,i]);
tab1.Cells[3,i]:=FloatToStr(r);
end;
end;
Пример результата выполнения этой процедуры для четырёх строк приведён на рис.12.
Рис.12. Результат выполнения программы