Например, если в окно с именем Edit3 ввести последовательность символов 'ABC', то переменная Edit3.text получит значение 'ABC'. Это значение можно присвоить любой переменной типа string, например
var S: String;
. . . . . . .
S:= Edit3.Text; .
Для записи последовательности символов из программы в строку Edit1 достаточно выполнить оператор присваивания
Edit1.Text := St; (St - переменная строкового типа).
Пример. Для иллюстрации ввода и вывода данных с помощью компонента Edit создадим проект с формой, показанной на рис.5.24.1
Рис. 5.24.1 Форма для примера
То есть форма должна содержать строку Edit и две кнопки: "закрыть" и "операция". В строку Edit будем записывать символы. При нажатии на кнопку "операция" программа должна забирать введенную последовательность символов, делать с ней некоторые преобразования (например, добавлять слева и справа символ #) и возвращать результат в строку Edit.
1.Создадим форму с заголовком "пример", для этого запишем в свойстве Caption формы слово "пример".
2.Создадим две кнопки "закрыть" и "операция". Как создать кнопки мы уже рассмотрели. Заметим только - при создании второй кнопки в описание класса будет добавлен компонент
Button2:Tbutton
и метод для обработки события связанного со второй кнопкой
Procedure Button2Click(sender:Tobject);
а в конце модуля формы будет добавлена заготовка процедуры обработчика
Procedure Tform1.Button2Click(sender:Tobject);
begin
end;.
2. Создадим строку редактирования Edit. Для этого
- в палитре компонентов выберем страницу "стандартные";
- щелкнем по кнопке и нарисуем в форме прямоугольник.
На экране в форме появится выделенный прямоугольник с текстом Edit1.
Значение строки редактирования передается через свойство Text, по умолчанию в этом свойстве записано Edit1. Удалим этот текст из свойства Text.
Теперь рассмотрим как можно передавать в программу и возвращать из программы данные через окно редактирования. Так как символы и числа обрабатываются по разному, рассмотрим два примера.
5.12.3. Ввод и вывод символьных данных.
Подготовим проект, который позволяет делать следующее. Пользователь вводит в строку редактирования последовательность символов. После щелчка на кнопке "операция" программа должна:
- взять строку символов и добавить слева и справа символ # ;
- удалить из строки исходную последовательность;
- вывести в строку Edit полученную последовательность.
Для реализации этих функций необходимо в модуле формы добавить следующее (выделено жирным шрифтом):
a) в разделе переменных указать переменную (например S) строкового типа, т.е. раздел переменных будет иметь вид
Var Form1:Tform;
S : String;
б) в процедуру обработчика события для кнопки "операция" добавить текст:
procedure Tform1.Button2Click(sender: Tobject);
begin
S:=Edit1.Text; //чтение из окна в S
Edit1.Text := ''; //очистка окна
S:= '#' + S + '#'; //добавление символов слева и справа
Edit1.Text := S; //запись в окно новой строки
end;
Полный текст модуля формы приведен ниже.
unit Uni3;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;
var Form1: TForm1;
S:String;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
Close
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
S:=Edit1.Text; Edit1.Text:='';
S:='#'+S+'#'; Edit1.Text:=S;
end;
end.
5.12.4. Ввод и вывод чисел.
Через строку Edit можно передавать не только текст, но и числа. При этом числа передаются как последовательности символов, поэтому при передаче чисел необходимо предусмотреть преобразование числовых символов в числа при вводе и преобразование чисел в последовательности символов при выводе. Для этого можно использовать стандартные функции:
- Val(S,m,n) - для преобразования последовательности символов (S) в число (m). Если число содержит недопустимый символ, то переменная n (целого типа) получает значение кода этого символа.
Пример: если в поле Edit1 мы ввели число, значение которого должна получить переменная А, то надо записать
Val(Edit1.Text,A,cod);
(переменная cod должна быть объявлена как данное целого типа);
- Str(Y,S) - для преобразования числа (У) в последовательность символов (S) (символьное изображение числа). В функции Str можно также указывать ширину поля (Sp) и количество десятичных знаков (dz) как и в процедуре write, т.е. форма записи функции Str имеет вид
Str(Y:Sp:dz, S);.
Например, запись вида Str(y:7:3,S1);
Str(z:14,s2);
означает, что символьное представление числа У будет занимать поле из 7 позиций и в дробной части числа будет 3 позиции, а переменная Z будет представлена в форме с буквой Е и мантисса будет содержать пять цифр в дробной части, например
-1,10765Е+0003 .
Замечание. В DELPHI определен широкий набор стандартных функций для преобразования типов. В частности есть функции выполняющие аналогичные преобразования:
FloatToStr(X) - преобразует вещественное число типа Extended в символьное представление.
IntToStr(N) - преобразует целое число типа Integer в строку символов.
StrToFloat(s) - преобразует строку s в двоичное вещественное число типа Extended.
StrToInt(s) - преобразует строку s в двоичное целое число типа Integer.
Пример. Преобразуем предыдущий пример так, чтобы при нажатии на кнопку "операция" программа:
- брала из поля Edit символьное представление числа;
- преобразовывала его в числовую форму (переменная Х);
- возводила в квадрат (Y:=X*X);
- полученный результат (У) преобразовывала в символьное представление и выводила его в окне Edit.
Для этого добавим в модуль формы следующее:
1) В раздел переменных добавим описание переменных X, Y и cod, т.е.
Var Form1:Tform;
S :String;
X,Y :Real;
cod :Integer;
2) В обработчике события для кнопки "операция" запишем
Procedure Tform1.Button2Click(sender:Tobject);
begin
Val(Edit1.Text,X,cod); {преобразование в число}
Edit1.Text:='';{очистка окна}
Y:=X*X;{вычисление У}
Str(Y,S);{преобразование числа в символы}
Edit1.Text:=S{вывод в окно}
End;
Полный текст модуля формы для этого примера приведен ниже.
unit Uni4;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;
var Form1: TForm1;
S:String;
X,Y:Real; cod:Integer;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
Close
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Val(Edit1.Text,X,cod);
Edit1.Text:='';
Y:=X*X;
Str(Y,S);
Edit1.Text:=S;
end;
end.