2010-02-10 4 views
1

J'essaie de modifier la valeur d'un contrôle Editable-Text dans Allegro CL (version 8.0.1) en cliquant sur un bouton par défaut.Modification d'une valeur de texte modifiable dans Allegro CL

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

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

(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 sans résultat

La fente de dialogue-éléments sur le formulaire est une liste avec les éléments 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 d'avance.

Répondre

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

Quelque chose comme ce qui précède. Vous devez obtenir la valeur du symbole dans le bon paquet. il y a probablement aussi une fonction accesseur comme WIDGET-VALUE. Alors (setf (widget widget-valeur) "foo") pourrait fonctionner ...

Je ne suis pas un utilisateur ACL - il y a probablement de meilleurs moyens. Les questions spécifiques à l'ACL sont mieux posées sur la liste de diffusion de leurs utilisateurs.

+0

La solution 'valeur à sous' ne fonctionne pas, ni celui avec widget-valeur. – foliveira

+0

C'était un indice, mais vous devriez vraiment utiliser la liste de diffusion pour ACL. http://www.franz.com/support/acl.forum.lhtml –

0

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 utiliser setf comme ci-dessus pour définir les attributs appropriés (comme "valeur").

espérons que cela aide.

0

Vous devez utiliser les fonctions "find-component" et "value" ensemble.

La fonction "find-component" trouve le widget dans votre projet et "value" renvoie la valeur du widget.

Si vous avez du texte statique dans un formulaire, vous pouvez modifier la valeur du texte statique comme ceci.

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

Questions connexes