- •Теперь необходимо добавить на форму компоненты, посредством которых пользователь будет общаться с программой. Для выполнения этой операции можно использовать один из нижеописанных способов.
- •Для того чтобы пользователь мог вводить данные, добавьте компонент Edit. Ряд его свойств следует изменить.
- •Только что добавленный компонент Edit нуждается в пояснении своего назначения для пользователя. Чтобы разрешить все вопросы, добавьте компонент Label.
- •Подтверждать свой ввод пользователь будет нажатием кнопки. Добавьте на форму компонент BitBtn с вкладки Additional.
- •И, наконец, последний, необходимый компонент - кнопка завершения работы программы. Добавьте форму компонент BitBtn с вкладки Additional.
- •И, наконец, последний штрих - подготовка программы к работе. Для того, чтобы программа могла подготовить себя к работе, нужно добавить еще несколько операторов.
Подтверждать свой ввод пользователь будет нажатием кнопки. Добавьте на форму компонент BitBtn с вкладки Additional.
Свойство |
Значение |
Комментарий |
Kind |
bkYes |
Тип кнопки |
Caption |
Ввод |
Заголовок компонента |
Height |
25 |
Высота компонента |
Left |
13 |
Расстояние от левого верхнего угла компонента до левого края формы |
Name |
bbRun |
Имя компонента |
Top |
130 |
Расстояние от левого верхнего угла компонента до верхнего края формы |
Width |
75 |
Ширина компонента |
И, наконец, последний, необходимый компонент - кнопка завершения работы программы. Добавьте форму компонент BitBtn с вкладки Additional.
Свойство |
Значение |
Комментарий |
Kind |
bkClose |
Тип кнопки |
Caption |
Выход |
Заголовок компонента |
Height |
25 |
Высота компонента |
Left |
123 |
Расстояние от левого верхнего угла компонента до левого края формы |
Name |
bbClose |
Имя компонента |
Top |
130 |
Расстояние от левого верхнего угла компонента до верхнего края формы |
Width |
75 |
Ширина компонента |
Ну вот, внешний вид новой программы уже сформирован. Запишите все изменения в проекте нажатием кнопки Save All (Кстати, периодически полезно нажимать эту кнопку, чтобы сохранить свою работу, например, перед запуском программы).
Созданную программу уже можно даже опробовать в действии: для этого нажмите кнопку Run или клавишу F9 на клавиатуре. Вдоволь налюбовавшись плодами своего труда, закройте программу. Сейчас радость от всего увиденного может омрачать лишь одно: как Вы убедились, созданная программа беспомощна как младенец, она ничего не умеет делать. Ее обучением Вы и займетесь в ближайшее время.
Для обеспечения работоспособности программы необходимо написать код, который будет выполняться в ответ на действия пользователя. Эту работа будет вестись в окне Main.pas. Туда нужно добавить несколько строк – все, что ниже выделено жирным шрифтом.
type
TMain_form = class(TForm)
mmOutput: TMemo;
edInput: TEdit;
Label1: TLabel;
bbRun: TBitBtn;
bbClose: TBitBtn;
private
{ Private declarations }
// любой текст до конца строки, начинающийся с символов '//' - комментарий,
// компьютером он не воспринимается, и необходим лишь человеку
// эта строка, как и предыдущие - комментарий
big_number, // задуманное число
test_val, // значение, введенное пользователем
err_code:integer; // код ошибки
answer_str:String; // строка ответа пользователю
begin_of_new_game:Boolean; // признак начала игры
public
{ Public declarations }
end;
Но это еще не все. Сейчас начинается самое интересное. Пользователь во время работы взаимодействует с программой и вполне обоснованно ожидает, что после нажатия кнопки «Ввод» компьютер проанализирует введенное значение. Чтобы анализ действительно происходил, нужно написать код, который реагирует на данное событие - нажатие кнопки «Ввод». Для этого выполните двойной щелчок мышью на кнопке «Вид» формы. Delphi подготовит шаблон процедуры, которая будет выполнять все необходимые действия. Вам же остается только эти действия описать.
procedure TMain_form.bbRunClick(Sender: TObject);
begin
// Если нужно начать новую игру
if (begin_of_new_game) then
begin
// задумаем число
big_number:=Random(1001);
// выведем сообщение
mmOutput.Text:='Число задумано.';
// добавим к сообщению строку
mmOutput.Lines.Add('Попробуйте угадать!');
// очистим поле ввода
edlnput.Text:=’’;
// установим курсор в поле ввода
edInput.SetFocus;
// сменим название кнопки
bbRun.Caption:='Ввод';
// сбросим признак начала новой игры
begin_of_new_game:= False;
end // иначе
else
begin
// преобразуем введенную пользователем строку в число
Val(edInput.Text,test_val,err_code);
// если введеная строка не является числом, сообщим об ошибке
if (err_code <> 0) then
answer_str:='Ошибочный ввод.'
else
begin
// сформируем ответ пользователю в виде строки, она начинается с введенного числа
Str(test_val,answer_str);
// добавим разделители в строку ответа
answer_str:=answer_str +' -';
// определим дальнейшее содержимое строки, если введенное значение больше задуманного
if (test_val > big_number) then
//добавим подстроку
answer_str:=answer_str + 'Перелет.'
else
// если введенное значение меньше задуманного
if (test_val < big_number) then
// добавим подстроку
answer_str:=answer_str + 'Недолет.'
else
begin
// пользователь угадал число, сформируем ответ
answer_str:=answer_str + 'Угадали!'#13#10;
answer_str:=answer_str + 'Для начала нового сеанса'#13#10;
answer_str:=answer_str + 'нажмите кнопку "Игра".';
// сменим название кнопки, она будет начинать новую игру
bbRun.Caption:='Игра';
// установим признак начала новой игры
begin_of_new_game:=True;
end;
end;
// выведем пользователю сформированную строку ответа
mmOutput.Lines.Add(answer_str);
// очистим поле ввода
edInput.Text:='';
// установим курсор в поле ввода
edInput.SetFocus;
end;
end;
