⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clickresponderdemo.pro

📁 Visual Prolog 7.1的一些学习资料,希望对您有用
💻 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 + -