Рекомендуемый вид формы приведен на рис. 1.12.

Рис. 1.12. Форма программы Поездка на дачу

implementation
{$R *.dfm}
I Процедура EditKeyPress обрабатывает нажатие клавиш в поле Расстояние,
Цена и Потребление. Сначала надо обычным образом создать процедуру обработки события
OnKeyPress для поля Editl, затем назначить эту процедуру событию OnKeyPres полей Edit2 и Edit3.
Кроме того, свойству Tag компонентов Editl, Edit2 и Edit3 надо присвоить
соответственно значения 1, 2 и 3. Свойство Tag используется в процедуре EditKeyPress для идентификации компонента. )
procedure TForml.EditKeyPress(Sender: TObject; var Key: Char); var
Edit: TEdit; begin
Edit := Sender as TEdit;
// в поле Edit можно ввести только дробное число
case Key of
' 0' . . ' 9' : ; // цифры
#8: ; // клавиша
'.',',': begin
Key := DecimalSeparator;
if Pos(DecimalSeparator,Edit.Text) о О
then Key := #0; end;
#13: // клавиша case Edit.Tag of 1:
// клавиша нажата в поле Editl
Edit2.SetFocus; // фокус в поле Edit2 2:
// клавиша нажата в поле Editl
Edit3.SetFocus; // фокус в поле Edit3 3:
// клавиша нажата в поле Edit3
Buttonl.SetFocus; // фокус на кнопку But ton 1 end; end; end;
// щелчок на кнопке Вычислить
procedure TForml.ButtonlClick(Sender: TObject);
var
rast : real; // расстояние cena : real;
// цена
potr : real; // потребление на 100 км summ : real;
// сумма mes: string; begin
// здесь возможно исключение типа EConvertError
// в случае, если пользователь оставит // одно из полей ввода незаполненным try
rast := StrToFloat(Editl.Text);
cena := StrToFloat(Edit2.Text); potr := StrToFloat(Edit3.Text); except
on EConvertError do begin
ShowMessage('Даные надо ввести во все поля!1);
// попытаемся найти пустое поле if Length(Editl.Text) = 0
then Editl.SetFocus else if Length(Edit2.Text) = 0
else Edit3.SetFocus;
exit;
end; end; .
suinm := (rast / 100) * potr * cena; mes := 'Поездка на дачу';
if CheckBoxl.Checked then begin
summ := summ * 2; mes := mes + ' и обратно'; end;
mes := mes + 'обойдется в ' + FloatToStrF(summ,ffGeneral,4,2)
+ ' руб.';
Label4.Caption := mes; end;
end.