Deshabilitar botones individuales en un Capi de Lispworks: Push-Button-Panel
-
27-10-2019 - |
Pregunta
Estoy trabajando en un juego Connect Four usando LISP común y el Lispworks Capi. He terminado con la interfaz, excepto una cosa: uso push-buttons (en un panel de botón) para soltar piezas en las columnas, y me gustaría deshabilitar un botón una vez que su columna correspondiente esté llena. Soy relativamente nuevo en Lisp, y especialmente no entiendo las cosas orientadas a objetos, por lo que no puedo entender cómo hacerlo.
Se puede crear un solo botón de empuje esto:
(setf my-button (capi:contain
(make-instance 'capi:push-button
:text "Button!")))
Y deshabilitado así:
(capi:apply-in-pane-process
my-button #'(setf capi:button-enabled) nil my-button)
Se crea un panel de botón de manera similar, excepto que se necesita un :items
argumento que es una lista de botones (o datos, de los cuales el CAPI creará botones de) para estar en el panel.
Simplemente necesito saber cómo deshabilitar los botones individuales de un panel de botón. También sería bueno si pudiera explicar lo que está sucediendo en ese último código allí, porque no lo entiendo en absoluto.
¡Gracias!
Solución
Un poco de búsqueda en el manual revela esta función, que le permite habilitar/deshabilitar uno o más elementos en un push-button-panel
. Además, el código que deseaba explicó llama a la función (setf capi:button-enabled)
con los argumentos nil
y my-button
. Sin embargo, esta función se llama en el "proceso" asociado con su botón. (Ver la documentación aquí
(PD si necesita ayuda para comprender las "cosas orientadas a objetos", Lisp común práctico podría ser un recurso útil)