![]() |
|
|
Регистрация | << Правила форума >> | 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
|
|||
|
|||
![]() спасибо большое!
|