Pregunta

Estoy tratando de cambiar el valor de un control editable-Texto en Allegro CL (versión 8.0.1) haciendo clic en un botón predeterminado-.

He leído sobre (setf value) pero no han encontrado ningún ejemplo.

La función He ttached ir al restaurante del evento Click es la siguiente

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

    t)

Como se puede ver que hay una falta de código en allí :) He intentado varios métodos como (setf (slot value :txt 'value) 'TEXT) y (setf value 'TEXT) pero fue en vano.

La ranura de diálogo-artículos en el formulario es una lista con los siguientes elementos definidos por

(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 "")
 )

Cualquier ayuda? Gracias de antemano.

¿Fue útil?

Solución

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

Algo parecido a lo anterior. Es necesario obtener el valor de símbolo en el paquete correcto. Probablemente también hay una función de acceso como widgets valor. Entonces (widget de setf (widget de valor) "foo") podrían funcionar ...

No soy un usuario de ACL - hay probablemente mejores maneras. preguntas específicas ACL se les pide mejor en sus lista de distribución.

Otros consejos

Hay un ejemplo en algún lugar de franz.com donde encontré esto:

(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

símbolo "szerkeszto" se convierte en la multilínea se puede editar texto-1, entonces usted puede utilizar setf como el anterior para establecer los atributos apropiados (como el "valor").

Espero que esto ayude.

Es necesario utilizar las funciones y el "valor" juntos.

"-componente de encontrar"

La función "buscar-componente" encuentra el widget en su proyecto                   y "valor" devuelve el valor del widget.

Si usted tiene estática de texto en un formulario, puede cambiar el valor del texto estático como sigue.

(let ((ED1 (Encontrar componentes: estática de texto 1: Form1)))    (Setf (valor ed1) "lo hice."))

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top