Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Создание обработчиков нажатия на кнопку.




Для создания обработчика нажатия на кнопку pushButton поступают следующим образом: в контекстном меню ветви <имя формы>.frm выбрать Code Expert. В окне Dialog and Window Expert выбрать команду Control /<название кнопки>. Затем в редакторе текста программы добавить необходимый обработчик.

Пример.При нажатии на кнопку pushButton _ ctl вывести в компонент staticText надпись «Искусственный интеллект».

Для этого разместить на форме компоненты pushButton _ ctl и staticText как показано на рисунке.

Рис 3.3.

 

Для того чтобы вывести текст в компонент staticText используется метод setText ( string : Title ), где Title - выводимый текст. Таким образом обработчик нажатия на кнопку будет следующий

onPushButton(_Source) = button::defaultAction():-staticText_ctl:setText(" Искусственный интеллект ").

Пример.При нажатии на кнопку pushButton _ ctl вывести в компонент staticText текст введенный в поле edit _ ctl.

Для этого разместить на форме компоненты pushButton _ ctl , staticText и edit _ ctl как показано на рисунке.

Рис 3.4.

 

Для того чтобы получить текст из компонента staticText используется метод getText (). Таким образом, обработчик нажатия на кнопку будет следующий

onPushButton(_Source) =button::defaultAction():-staticText_ctl:setText(edit_ctl:getText()).

Пример .Написать программу, обрабатывающую базу знаний «Родители».

  1. Создать форму, разместить на ней компонентEdit, 2 компонента Push Button (кнопки Cancel и Help удалить) и компонентListBoxкак показано на рисунке 3.5.

  1. Установить у них следующие свойства

Форма - Name = form1, Title = Form1

Edit1 - Name = edit_ctl

PushButton1 - Name = pushButton_ctl, Text = Find Child

PushButton2 - Name = clear_ctl, Text = Clear

LisBox1 - Name = listBox_ctl, Sort=false ( без галочки )

  1. Активизировать команду File / New как описано выше для вывода формы.
  2. В дереве проекта дважды щелкнуть по ветке Form1.pro. В появившемся окне ввести следующую базу знаний:

predicates

родитель :(string,string) nondeterm (i,o) .

clauses

родитель("пам", "боб").

родитель("том", "боб").

родитель("том", "лиз").

родитель("боб", "энн").

родитель("боб", "пат").

родитель("пам", "джим").

Примечание.

В описании предиката родитель установлен режим nondeterm , т.е. результатом выполнения предиката может быть удача ( succeed ), неудача ( fail ) и возвращение на исходную позицию ( BacktrackPoint ), кроме того указано что первый аргумент предиката будет использован для записи ( input ), а второй для чтения ( output ).

  1. В обработчике нажатия на кнопку Find Child ( pushButton _ ctl )записать следующую процедуру

onPushButton(_Source) = button::defaultAction():-

X = edit _ ctl : getText (), /* прочитать имя родителя из поля edit _ ctl и поместить его в переменную Х*/

родитель ( X , Y ), /*Обработать предикат родитель */

listBox _ ctl : add ( Y ), /* в случае успешного сопоставления вывести значение переменной Y в listBox _ ctl и*/

fail , /*проверить следующий факт */

!. /*в случае неудачи перейти к следующему предикату процедуры */

onPushButton(_Source) = button::defaultAction():-

listBox _ ctl : getCount ()<>0, /*если найдены дети, то*/

listBox _ ctl : add ("Больше детей нет"), /* вывести сообщение, иначе ... */

!. /* перейти к следующему предикату процедуры */

onPushButton(_Source) = button::defaultAction():-

listBox_ctl:add("Соответствий не выявлено"). /* в случае неудачного сопоставления вывести сообщение в listBox _ ctl */

  1. В обработчике нажатия на кнопку Clear ( clear _ ctl ) ввести следующий предикат

onClear(_Source) = button::defaultAction():-

listBox_ctl:clearAll().










Последнее изменение этой страницы: 2018-05-10; просмотров: 247.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...