Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Обработчик события OnChange для полей ввода коэффициентов




Обработчик события OnKeyPress для формы

Обработчик события OnCreate для формы

Событие OnCreate возникает в момент создания формы и может использоваться для задания каких-либо настроек.

 

void __fastcall TFrmSqEq::FormCreate(TObject *Sender)

{

KeyPreview = true;

DecimalSeparator = '.';

}

 

Свойство KeyPreview определяет, должна ли форма получать клавиатурные события перед их передачей активному элементу управления. Если KeyPreview есть true, клавиатурные события сначала передаются форме и затем активному компоненту, если KeyPreview – false, клавиатурные события происходят только на активном компоненте.

 

 

Событие OnKeyPress возникает при нажатии любой клавиши на клавиатуре. Благодаря установке значения свойства ReyPreview в true данный обработчик будет вызываться даже если фокус ввода находится в каком-либо текстовом поле для коэффициентов уравнения, то есть при нажатии любой клавиши в процессе ввода коэффициентов. У пользователей есть привычка, нажимать клавишу Enter при завершении ввода. Давайте учтем эту привычку и предусмотрим реакцию на нажатие клавиши Enter в рассматриваемом обработчике.

В обработчик данного события Windows передает аргумент Key, содержащий код нажатой клавиши.

 

void __fastcall TFrmSqEq::FormKeyPress(TObject *Sender,

char &Key)

{

if(Key == char(13)){ //Если нажата клавиша Enter

if(EdA->Focused()) //Если вводился коэффициент a.

EdB->SetFocus(); //переходим к вводу b

else if(EdB->Focused()) //Если вводился b,

EdC->SetFocus(); //будем вводить c

else if(EdC->Focused()) //Если вводился c,

BtnSolve->SetFocus(); //переведем фокус на кнопку

}

}

 

Ключевое слово C++Builder __fastcall дает указание компилятору, чтобы для размещения аргументов функции использовались регистры процессора, а не стек в оперативной памяти, чтобы ускорить работу программы.

 

Событие OnChange для текстовых полей Edit возникает при изменении их свойства Text. Для рассматриваемой задачи это происходит, когда меняются значения коэффициентов квадратного уравнения.

Картина, создаваемая программой на форме не должна быть противоречивой. Это значит, что при любом изменении коэффициентов, решение предыдущего уравнения следует затереть. Сделаем это в обработчике события OnChange для полей ввода коэффициентов. Текстовых полей имеется три, в обработчике события OnChange для каждого из них должна выполняться одинаковая работа, поэтому для всех трех компонентов желательно иметь одну функцию-обработчик события. Для создания общего обработчика для нескольких компонентов нужно выделить компоненты EdA, EdB, EdC при нажатой клавише Shift, затем на вкладке Events Инспектора Объектов в поле справа от названия события OnChange написать имя обработчика, например, EdABCChange, затем дважды щелкнуть мышью.

Вот текст этого обработчика.

 

void __fastcall TFrmSqEq::EdABCChange(TObject *Sender)

{

LblSolve->Caption = "";

}




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


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


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



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




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