Рекомендуемый вид формы приведен на рис. 1.2. Программа должна быть спроектирована таким образом, чтобы кнопка Пересчет была доступна только в том случае, если пользователь ввел исходные данные.

Рис. 1.2. Форма программы Фунты-килограммы

// щелчок на кнопке Пересчет
procedure TForml.ButtonlClick(Sender: TObject);
var
funt: real; // масса в фунтах
kg: real; // масса в килограммах begin
// Кнопка Пересчет доступна только в том случае,
// если в поле Editl есть данные.
// Поэтому наличие в поле информации можно не проверять.
funt := StrToFloat(Editl.Text);
kg := funt * 0.4095;
Label2.Caption := FloatToStrFffunt,ffGeneral,5,2) + 1 ф — это
' + FloatToStrF(kg,ffGeneral,5,2) + ' кг1;
end;
// нажатие клавиши в поле Editl
procedure TForml.EditlKeyPress(Sender: TObject; var Key: Char);
begin
case Key of •
'0'.. ' 9', #8:; // цифры и клавиша
! Обработку десятичного разделителя
сделаем "интеллектуальной". Заменим точку и запятую на
символ DecimalSeparator — символ, который используется при записи дробных чисел.
I
I I I I .
begin
Key := DecimalSeparator;
// Проверим, введен ли уже в поле
// Edit десятичный разделитель
if pos(DecimalSeparator,Editl.Text) <> 0
then Key := Char(0); end; else Key := Char(0);
// остальные символы запрещены
end; end;
// содержимое поля Editl изменилось
procedure TForml.EditlChange(Sender: TObject);
begin
// проверим, есть ли в поле Editl исходные данные if Length(Editl.Text) = 0
then Buttonl.Enabled := False
// кнопка Пересчет недоступна else Buttonl.Enabled := True;
// кнопка Пересчет доступна end;
// Событие onCreate происходит в момент создания формы,
// до того, как форма появится на экране
procedure TForml.FormCreate(Sender: TObject); begin
{ т. к. поле Editl пустое (пользователь
еще не ввел исходные данные), то
сделаем кнопку Пересчет недоступной )
Buttonl.Enabled := False; end;