Domanda

Sto lavorando su un gioco Connect Four utilizzando Common Lisp e il LispWorks CAPI . Ho finito con l'interfaccia tranne per una cosa: Uso pulsanti (in un pulsante del pannello) per cadere pezzi nelle colonne, e vorrei disabilitare un tasto una relativa colonna corrispondente è pieno. Sono relativamente nuovo per Lisp, ed io in particolare non capisco la roba orientato agli oggetti, quindi non riesco a capire come farlo.

Un unico pulsante può essere creato thisly:

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

e disabili nel seguente modo:

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

Un pulsante di pannello viene creata in modo simile, ad eccezione che riceve un argomento :items che è un elenco di tasti (o dati, che il CAPI creerà pulsanti su) sia nel pannello.

Ho semplicemente bisogno di sapere come disattivare i singoli pulsanti di un pulsante sul pannello. Inoltre sarebbe bello se si potesse spiegare ciò che sta accadendo in quell'ultimo pezzo di codice lì, perché non capisco affatto.

Grazie!

È stato utile?

Soluzione

Un po 'di ricerca attraverso il manuale rivela questa funzione , che permette di abilitare / disabilitare uno o più elementi in una push-button-panel. Inoltre, il codice si voleva spiegato le chiamate alla funzione (setf capi:button-enabled) con gli argomenti nil e my-button. Tuttavia, questa funzione viene chiamata nel "processo" associato con il tasto. (Consultare la documentazione qui

(PS Se avete bisogno di aiuto per capire la "roba object oriented", Practical Common Lisp potrebbe essere una risorsa utile)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top