отключить отдельные кнопки на капитале lispworks: кнопочная панель - PullRequest
3 голосов
/ 13 июня 2011

Я работаю над игрой Connect Four, используя общий lisp и LispWorks CAPI .Я закончил с интерфейсом, за исключением одного: я использую кнопки (в кнопочной панели), чтобы помещать фрагменты в столбцы, и я хотел бы отключить кнопку после заполнения соответствующего столбца.Я относительно новичок в lisp, и особенно не разбираюсь в объектно-ориентированных вещах, поэтому я не могу понять, как это сделать.

Одна кнопка может быть создана следующим образом:

(setf my-button (capi:contain
                 (make-instance 'capi:push-button
                                :text "Button!")))

И отключен таким образом:

(capi:apply-in-pane-process 
 my-button #'(setf capi:button-enabled) nil my-button)

Панель кнопок создается аналогично, за исключением того, что она принимает аргумент :items, который представляет собой список кнопок (или данных, которыеCAPI создаст кнопки из), которые будут находиться на панели.

Мне просто нужно знать, как отключить отдельные кнопки на кнопочной панели.Также было бы неплохо, если бы вы могли объяснить, что происходит в этом последнем фрагменте кода, потому что я его совсем не понимаю.

Спасибо!

1 Ответ

2 голосов
/ 13 июня 2011

Немного поиска в руководстве показывает эту функцию , которая позволяет включать / отключать один или несколько элементов в push-button-panel.Кроме того, код, который вы хотели объяснить, вызывает функцию (setf capi:button-enabled) с аргументами nil и my-button.Однако эта функция вызывается в «процессе», связанном с вашей кнопкой.(см. документацию здесь

(PS Если вам нужна помощь в понимании "объектно-ориентированных вещей", Practical Common Lisp может быть полезным ресурсом)

...