Domanda

Sto cercando di modificare il valore di un controllo modificabile-Text in Allegro CL (versione 8.0.1) facendo clic su un default-Button.

ho letto su (setf value) ma non ho trovato alcun esempio.

La funzione che ho ttached al on-clic evento è la seguente

    (defun form1-default-button-2-on-click (dialog widget)
       (declare (ignorable dialog widget))

    t)

Come si può vedere c'è una mancanza di codice in là :) Ho provato vari metodi come (setf (slot value :txt 'value) 'TEXT) e (setf value 'TEXT), ma senza alcun risultato.

Lo slot dialog-oggetti della maschera è una lista con i seguenti elementi definiti da

(list (make-instance 'default-button :font
                   (make-font-ex nil "Segoe UI / Default" 12) :left
                   56 :name :default-button-2 :on-change
                   'form1-default-button-2-on-change :top 36)
    (make-instance 'editable-text :font
                   (make-font-ex nil "Segoe UI / Default" 12) :left
                   52 :name :txt :top 152 :value "")
 )

Qualsiasi aiuto? Grazie in anticipo.

È stato utile?

Soluzione

(setf (slot-value widget 'value) "foo")

Qualcosa di simile a quanto sopra. È necessario ottenere il valore simbolo nel pacchetto corretto. Probabilmente c'è anche una funzione di accesso, come widget-VALORE. Poi (setf (widget di widget di valore) "foo") potrebbe funzionare ...

Non sono un utente ACL - ci sono modi probabilmente migliori. domande specifiche ACL sono invitati meglio sulle loro mailing list degli utenti.

Altri suggerimenti

C'è un esempio da qualche parte sul franz.com dove ho trovato questo:

(defun form1-button5-on-change (widget new-value old-value)
  (declare (ignorable widget new-value old-value))
  (let ((szerkeszto (find-sibling :multi-line-editable-text-1 widget)))
    (setf (value szerkeszto) "bla" ))
  t) ; Accept the new value

simbolo "szerkeszto" diventa il multi-linea-modificabile-text-1, quindi è possibile utilizzare setf come sopra per impostare gli attributi appropriati (come "valore").

Spero che questo aiuti.

È necessario utilizzare le funzioni "trova-componente" e "valore" insieme.

La funzione "find-componente" trova il widget nel proprio progetto                   e "valore" restituisce il valore del widget.

Se hai statico-testo in un modulo, è possibile modificare il valore della statica testo come questo.

(let ((ed1 (find-componenti: static-text-1: Form1)))    (Setf (valore ed1) "l'ho fatta."))

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