2011-06-13 97 views
2

我正在使用常用lisp和LispWorks CAPI进行Connect Four游戏。除了一件事之外,我完成了界面:我使用按钮(在按钮面板中)将各个部分拖放到列中,并且我希望在其对应的列已满时禁用按钮。我对lisp比较陌生,特别是不了解面向对象的东西,所以我不知道如何去做。禁用lispworks capi上的单个按钮:按钮面板

单个按钮可以thisly创建:

(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

通过手册搜索的一点显示this function,它允许您启用/禁用push-button-panel中的一个或多个元素。此外,您想要解释的代码调用函数(setf capi:button-enabled),参数为nilmy-button。但是,此功能在与您的按钮关联的“过程”中调用。 (见文档here

(附注:如果您需要帮助理解“面向对象的东西”,Practical Common Lisp可能是一个有用的资源)