📄 clickresponderdemo.pro
字号:
/*****************************************************************************
Copyright (c) Prolog Development Center A/S
******************************************************************************/
implement clickResponderDemo
inherits dialog
open core, vpiDomains, resourceIdentifiers, stdio
constants
className = "clickResponderDemo/clickResponderDemo".
classVersion = "".
clauses
classInfo(className, classVersion).
clauses
new(Parent) :-
dialog::new(Parent),
generatedInitialize(),
listBox_ctl:addList(["Click Responder Number One","Click Responder Number Two"]),
listBox_ctl:selectAt(0, true),
check_ctl:setCheckedState(checkButton::checked),
succeed.
predicates
onFirstButton : button::clickResponder.
clauses
onFirstButton(_Source) = button::defaultAction() :-
writef("I am \"%\" click responder\n", predicate_name()).
predicates
onSecondButton : button::clickResponder.
clauses
onSecondButton(_Source) = button::defaultAction() :-
writef("I am \"%\" click responder\n", predicate_name()).
predicates
onThirdButton : button::clickResponder.
clauses
onThirdButton(_Source) = button::defaultAction() :-
writef("I am \"%\" click responder\n", predicate_name()).
predicates
onListBoxSelectionChanged : listControl::selectionChangedListener.
clauses
onListBoxSelectionChanged(Source) :-
checkButton::checked = check_ctl:getCheckedState(),
!,
Source:getAllSelected(_, Indexes),
button_ctl:setClickResponder(chooseClickResponder(Indexes)).
onListBoxSelectionChanged(_).
predicates
onCheck : checkButton::stateChangedListener.
clauses
onCheck(_Source, _OldState, checkButton::unchecked) :-
!,
button_ctl:resetClickResponder(),
write("Resetting click responder for the button to its default state"),nl.
onCheck(_, _, _) :-
listBox_ctl:getAllSelected(_, Indexes),
button_ctl:setClickResponder(chooseClickResponder(Indexes)).
predicates
% chooseClickResponder : (core::integer_list SelectedIndexes) -> button::clickResponder Responder.
chooseClickResponder : (core::positive_list SelectedIndexes) -> button::clickResponder Responder.
clauses
chooseClickResponder([0]) = clickResponder_numberOne :-
!,
write("Assigning clickResponder_numberOne responder to the button"),nl.
chooseClickResponder(_) = clickResponder_numberTwo :-
write("Assigning clickResponder_numberTwo responder to the button"),nl.
predicates
clickResponder_numberOne : button::clickResponder.
clauses
clickResponder_numberOne(_) = button::defaultAction :-
writef("I am %\n", predicate_name()).
predicates
clickResponder_numberTwo : button::clickResponder.
clauses
clickResponder_numberTwo(_) = button::noAction :-
writef("I am %\n", predicate_name()).
% This code is maintained by the VDE do not update it manually, 10:30:07-20.10.2004
facts
ok_ctl : button.
firstButton_ctl : button.
secondButton_ctl : button.
thirdButton_ctl : button.
check_ctl : checkButton.
button_ctl : button.
listBox_ctl : listBox.
predicates
generatedInitialize : ().
clauses
generatedInitialize():-
setFont(vpi::fontCreateByName("MS Sans Serif", 8)),
setText("ClickResponder Demo Dialog"),
setRect(rct(50,40,266,201)),
setModal(true),
setDecoration(titlebar([closebutton()])),
ok_ctl := button::newOk(This),
ok_ctl:setText("&OK"),
ok_ctl:setPosition(160, 136),
ok_ctl:setSize(48, 16),
setDefaultButton(ok_ctl),
firstButton_ctl := button::new(This),
firstButton_ctl:setText("First Button"),
firstButton_ctl:setPosition(8, 8),
firstButton_ctl:setSize(52, 12),
secondButton_ctl := button::new(This),
secondButton_ctl:setText("Second Button"),
secondButton_ctl:setPosition(8, 24),
secondButton_ctl:setSize(52, 12),
thirdButton_ctl := button::new(This),
thirdButton_ctl:setText("Third Button"),
thirdButton_ctl:setPosition(8, 40),
thirdButton_ctl:setSize(52, 12),
GroupBox_ctl = groupBox::new(This),
GroupBox_ctl:setText(""),
GroupBox_ctl:setPosition(72, 8),
GroupBox_ctl:setSize(136, 116),
check_ctl := checkButton::new(GroupBox_ctl),
check_ctl:setText("Button has click responder"),
check_ctl:setPosition(8, 0),
check_ctl:setWidth(98),
button_ctl := button::new(GroupBox_ctl),
button_ctl:setText("Button"),
button_ctl:setPosition(32, 80),
button_ctl:setSize(76, 20),
listBox_ctl := listBox::new(GroupBox_ctl),
listBox_ctl:setPosition(8, 16),
listBox_ctl:setSize(120, 24),
PleasePushTheButtonToSeeWhatHappen_ctl = textControl::new(GroupBox_ctl),
PleasePushTheButtonToSeeWhatHappen_ctl:setText("Please push the button to see what happen (nothing will happen until checkButton is checked)"),
PleasePushTheButtonToSeeWhatHappen_ctl:setPosition(8, 44),
PleasePushTheButtonToSeeWhatHappen_ctl:setSize(120, 32),
PleasePushTheButtonToSeeWhatHappen_ctl:setAlignBaseline(false),
firstButton_ctl:setClickResponder(onFirstButton),
secondButton_ctl:setClickResponder(onSecondButton),
thirdButton_ctl:setClickResponder(onThirdButton),
listBox_ctl:addSelectionChangedListener(onListBoxSelectionChanged),
check_ctl:addStateChangedListener(onCheck).
% end of automatic code
end implement clickResponderDemo
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -