Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Implementation. Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls;




Uses

Interface

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls;

Type TForm1 = class(TForm) Panel1: TPanel; Button1: TButton; BitBtnl: TBitBtn; Bevell: TBevel;


 



Edit1: TEdit; Label1: TLabel; Edit2: TEdit; Label2: TLabel; Edit3: TEdit; Label3: TLabel; Label4: TLabel; Edit4: TEdit;

procedure Edit1KeyPress (Sender: TObject; var Key: procedure Edit3KeyPress (Sender: TObject; var Key: procedure Button1Click (Sender: TObject);

procedure Edit1Exit (Sender: TObject);

procedure Edit2Exit(Sender: TObject);

procedure Edit3Exit (Sender: TObject);

end;

VarOperat - (Plus,Minus,Mult,Divide,None);

var Form1: TForm1; a,b: integer; Operat: VarOperat = None;

{$R *.DFM}

procedure TForm1.Edit1KeyPress (Sender: TObject;

var Key: Char);

begin

if not (key in [' 0'..' 9','-', #8]} thenkey:=#0;

end;

procedure TForm1.Ed±t3KevPress (Sender: TObject;

var Key: Char);

begin

if Length(Edit3.Text) = 0 then begin

if not (key in ['+','-','*','/',#8]) then key:=#0; end else Jcey:=#0; end;

procedure TForm1.Edit1Exit (Sender: TObject); begin

a:=StrToInt(Edit1.Text); end;

procedure TForm1.Edit2Exit (Sender: TObject); begin

b:=StrToInt(Edit2.Text); end;

procedure TForm1.Edit3Exit (Sender: TObject); var С:Char; begin

if Length(Edit3.Text) > 0 then begin Cl=Edit3.Textfl]; case С of

'+': Operat:=Plus;

 

‘-': Operat:=Minus; '*': Operat:=Mult;; '/': Operat:=Divide;

end; end else Operat:=None;

end;

procedure TForm1.Button1Click (Sender: TOb3ect);

var a:Real;

begin

 

Z:= 0.0; case Operat of plus: Z:=a+b; Minus: Z:=a-b; Mult: Z:=a*b; Divide:

if b=0 then begin

Edit4.Text:=1Деление на О1; Exit; end else

Z:= a/b; None: begin

Edit4.Text:= 'Операции нет'; Exit; end; end;

Edit4.Text:= FormatFloat('0.00',Z); end; end.

Необходимо отметить, что обработчик OnKeyPress для Edit3 содержит объявление переменной С символьного типа для записи вводимого знака арифметической операции, так как непосредственное использование строки Edit3.Text в качестве селектора оператора Сазе запрещено. Кроме того, в этом обработчике с помощью функции Length (S) (длина строки S) прове­ряется, был ли осуществлен ввод символа.

Обработчик событий OnKeyPress для Edit3 усложнен, - разрешается ввод только одного символа. Дополнительные ключевые слова begin и end (составной оператор) в этом обработчике необходимы, чтобы снять неодно­значность использования else - к какому if данное ключевое слово отно­сится. Кроме указанного выше составного оператора, следует обратить вни­мание на другие составные операторы данной программы.

В обработчике Button1Click используется процедура Exit для непо­средственного выхода из обработчика. Обработчик для Edit1 одновременно используется и для Edit2, как и в предыдущем примере 2. Кроме того, сле-ДУет обратить внимание, что, кроме цифровых символов, этот обработчик разрешает ввод символа "минус" для отрицательных чисел.


 


ИСПОЛЬЗОВАНИЕ ENTER В ПРИМЕРЕ 3

Часто при окончании ввода в элементе редактирования и переходе к cле, дующему управляющему элементу оказывается более удобным использова­ние клавиши Enter вместо Tab. Рассмотрим этот вопрос на примере 3.

Стандартным подходом в данном случае при обнаружении нажатия кла­виши Enter является подход с применением передачи фокуса с помощью метода SetFocus или свойства ActiveControl. Все, что нужно сделать в при­мере 3, переписать обработчики OnKeyPress в следующем виде:

procedure TForm1.Edit1KeyPress(Sender: TObject;

var Key: Char); begin

if key=#13 then

if Sender = Edit1 then Form1-ActiveControl:=Edit3 else Button1.SetFocus;

if not (key in [' 0'..'9','-', #8]) thenkey:=#0; end; procedure TForm1.Edit3KeyPress(Sender: TObj ect;

var Key: Char); begin

if key=#13 then Form1.ActiveControl:=Edit2; if Length(Edit3.Text) = 0 then begin

if not (key in ['+','-','*','/',#8]) then key:=#0; end else key:=#0; end;

Другим подходом является применение процедуры SelectNext, которая может передавать фокус следующему или предыдущему управляющему элементу. Рассматриваемая процедура имеет следующее описание: Se­lectNext (CurControl: TwinControl; GoForward, CheckTabStop: Boolean), где CurControl указывает на оконный управляющий элемент, относительно которого выполняется передача фокуса; параметр GoForward определяет направление передачи фокуса: следующий элемент (True) или предыдущий (False); параметр CheckTabStop определяет, нужно ли учиты- | вать значение свойства TabStop управляющего элемента, который должен получить фокус. Применение данной процедуры может оказаться проще, I чем предыдущий подход. Например, перепишем первый оператор в обра­ботчике Edit1KeyPress примера 3:

if key=#13 then SelectNext(Sender as TWinControl, true,true);.

В данном случае Sender имеет тип rob ject, а необходим тип TWinCon-trol, поэтому выполнено явное преобразование типов с помощью операции, as. В заключение одно замечание. Чтобы был осуществлен правильный пе

 


реход Edit2 к Button1 (а не к Edit4), необходимо установить для Edit4

свойство TabStop=f alse.

Возможен еще один подход обработки нажатия клавиши Enter с помо-ю SelectNext - можно использовать обработчик OnKeyPress самой фор­мы Для этого необходимо установить свойство формы KeyPreview = true, чтобы обработчик формы получил сообщение о нажатии клавиш первым.

ОПЕРАТОРЫ ЦИКЛА

 

Операторы цикла используются для программирования циклических вы­числительных процессов. Циклический вычислительный процесс пред­ставляет собой неоднократно повторяющиеся вычисления при различных значениях исходньгх данных. Например, пусть требуется построить график Y =fPO на отрезке [а; Ь\ с шагом Н. Для этого необходимо провести цикли­ческие, повторяющиеся вычисления в соответствии с табл. 10.

Таблица 10

 

X F(X) Число итераций
а Y=f(a)
a+h Y=f(a+h) Ь-а
….. … …... п =-------- + 1
b Y=f(b) h

Однократное выполнение расчета внутри цикла называется итерацией. Существуют три оператора цикла: операторы For, While и Repeat.




Поделиться с друзьями:


Дата добавления: 2014-12-29; Просмотров: 467; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.028 сек.