Question

Je suis en train de changer la valeur d'un contrôle éditable texte dans Allegro CL (version 8.0.1) en cliquant sur un défaut bouton.

J'ai lu (setf value) mais ai trouvé aucun exemple.

La fonction je ttached à l'événement en est le suivant cliquez

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

    t)

Comme vous pouvez le voir, il y a un manque de code là :) J'ai essayé différentes méthodes comme (setf (slot value :txt 'value) 'TEXT) et (setf value 'TEXT) mais en vain.

La fente de dialogue-points sur le formulaire est une liste avec les éléments suivants, définis par

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

Toute aide? Merci à l'avance.

Était-ce utile?

La solution

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

Quelque chose comme ci-dessus. Vous devez obtenir la valeur de symbole dans le bon paquet. probablement il y a aussi une fonction accesseur comme WIDGET-VALUE. Ensuite (setf (widget de valeur widget) "foo") pourrait fonctionner ...

Je ne suis pas un utilisateur ACL - il y a probablement de meilleures façons. ACL questions spécifiques sont plus posées sur leur liste de diffusion utilisateurs.

Autres conseils

Il y a un exemple quelque part sur franz.com où je trouve ceci:

(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

symbole « Szerkesztő » devient le multi-ligne modifiable texte-1, vous pouvez alors utiliser setf comme ci-dessus pour définir les attributs appropriés (comme « valeur »).

espérons que cette aide.

Vous devez utiliser les fonctions « trouver composants » et « valeur » ensemble.

La fonction « find-composant » trouve le widget dans votre projet                   et « valeur » renvoie la valeur du widget.

Si vous avez texte statique sous une forme, vous pouvez modifier la valeur du texte statique comme celui-ci.

(let ((ed1 (find-composant: statique texte 1: form1)))    (Setf (valeur ed1) "Je l'ai fait."))

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top