![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;
type
TfmMult = class(TForm)
btFirst: TBitBtn;
btSecond: TBitBtn;
edInput: TEdit;
mmOutput: TMemo;
btClose: TButton;
lbMessage: TLabel;
procedure btCloseClick(Sender: TObject);
procedure btFirstClick(Sender: TObject);
procedure btSecondClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
X,Y:integer;
public
{ Public declarations }
end;
var
fmMult: TfmMult;
implementation
{$R *.DFM}
procedure TfmMult.btCloseClick(Sender: TObject);
begin
Close;
end;
procedure TfmMult.btFirstClick(Sender: TObject);
begin
//Преобразуем текст из edInput в целое число:
X:=StrToInt(Trim(edInput.Text));
//Сообщаем в мемо-поле о вводе первого числа:
mmOutput.Lines.Add('Первое число - '+edInput.Text);
//Очищаем поле ввода:
edInput.Text:='';
//Возвращаем фокус полю ввода:
edInput.SetFocus;
//Выводим подсказку в поле метки:
lbMessage.Caption:='Введите второе число:';
//Делаем первую кнопку недоступной, а вторую доступной:
btFirst.Enabled:=False;
btSecond.Enabled:=True;
end;
procedure TfmMult.btSecondClick(Sender: TObject);
begin
//Преобразуем текст из edInput в целое число:
Y:=StrToInt(Trim(edInput.Text));
//Сообщаем в мемо-поле о вводе второго числа:
mmOutput.Lines.Add('Второе число - '+edInput.Text);
//Вычисляем и показываем результат:
mmOutput.Lines.Add('Результат: '+IntToStr(X)+'*'+
IntToStr(Y)+'='+IntToStr(X*Y));
//Очищаем поле ввода:
edInput.Text:='';
//Возвращаем фокус полю ввода:
edInput.SetFocus;
//Выводим подсказку в поле метки:
lbMessage.Caption:='Введите первое число:';
//Делаем первую кнопку доступной, а вторую недоступной:
btFirst.Enabled:=True;
btSecond.Enabled:=False;
end;
procedure TfmMult.FormActivate(Sender: TObject);
begin
//Передаем фокус полю ввода edInput:
edInput.SetFocus;
end;
end.Такая программа будет нормально работать с достаточно дисциплинированным пользователем, который вводит только «хорошие» данные, то есть целые числа. Если же в момент нажатия на какую-либо из кнопок btFirst или btSecond в поле ввода edInput будут содержаться символы, не являющиеся символьным представлением какого-либо целого числа, либо это поле будет пустым, то это вызовет ошибку и аварийное завершение работы программы (проверьте) Задание 1. Дополните программу защитой от некорректного ввода данных. Задание 2. Измените программу так, чтобы при начале ввода каждой следующей пары чисел (точнее - при вводе первого числа из пары) мемо-поле очищалось. Указание. Объект Lines, который хранит строки мемо-поля, обладает методом Clear, с помощью которого можно очистить содержимое мемо-поля. |
|
#2
|
|||
|
|||
|
Ну и в чем проблема.
Контроль можно сделать за счет использования функции TryIntToStr. Ну а уж для очистки вставить mmOutput.Lines.Clear в нужное место вообще не проблема. |
|
#3
|
|||
|
|||
|
если вам не сложно, не могли бы вы написать подробнее...
нужно сделать задачу, а я не понимаю... |
|
#4
|
|||
|
|||
|
Код:
If Not TryStrToInt(Trim(edInput.Text),Y) Then
Begin
showMessage('ВВедено не число');
Exit;
End;и так в обоих случаях. Очистку надо вставить в конец вот этой процедуры: btFirstClick |
|
#5
|
|||
|
|||
|
спасибо большое!
|