КАТЕГОРИИ: Архитектура-(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, которая может передавать фокус следующему или предыдущему управляющему элементу. Рассматриваемая процедура имеет следующее описание: SelectNext (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
■ Однократное выполнение расчета внутри цикла называется итерацией. Существуют три оператора цикла: операторы For, While и Repeat.
Дата добавления: 2014-12-29; Просмотров: 467; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |