Frage

Ich versuche, den Wert einer bearbeitbaren Textsteuerung in Allegro CL (Version 8.0.1), indem Sie eine Standard-Taste geändert werden.

Ich habe über (setf value) gelesen haben aber festgestellt keine Beispiele.

Die Funktion I auf das Ereignis auf Klick ttached haben, ist die folgende

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

    t)

Wie Sie sehen können gibt es einen Mangel an Code in ihm :) Ich habe versucht, verschiedene Methoden wie (setf (slot value :txt 'value) 'TEXT) und (setf value 'TEXT), aber ohne Erfolg.

Der Dialog-Elemente-Steckplatz auf der Form ist eine Liste mit den folgenden Elementen definiert durch

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

Jede Hilfe? Vielen Dank im Voraus.

War es hilfreich?

Lösung

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

So etwas wie die oben genannten. Sie müssen den Symbolwert in dem richtigen Paket. wahrscheinlich gibt es auch eine Accessorfunktion wie widget-VALUE. Dann (setf (Widget-Wert-Widget) "foo") funktionieren könnte ...

Ich bin kein ACL Benutzer - es gibt wahrscheinlich bessere Möglichkeiten. ACL spezifische Fragen werden am besten auf ihre Benutzer gefragt Mailingliste.

Andere Tipps

Es gibt ein Beispiel irgendwo auf franz.com wo ich fand diese:

(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

Symbol "Szerkesztő" wird die Multi-line-editierbare Text-1, dann können Sie setf wie die oben Satz entsprechenden Attribute (wie "value") verwenden.

hoffe, das hilft.

Sie müssen die Funktionen nutzen „find-Komponente“ und „Wert“ zusammen.

Die Funktion „find-Komponente“ findet das Widget in Ihrem Projekt                   und „Wert“ gibt den Wert des Widgets.

Wenn Sie statisch-Text in einer Form haben, können Sie den Wert des statischen Text wie dies ändern.

(let ((ED1 (find-Komponente: static-text-1: form1)))    (Setf (Wert ED1) "Ich habe es gemacht."))

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top