Изменение значения редактируемого текста в Allegro CL
-
19-09-2019 - |
Вопрос
Я пытаюсь изменить значение элемента управления Editable-Text в Allegro CL (версия 8.0.1), нажав кнопку по умолчанию.
я читал о (setf value)
но примеров не нашел.
Функция, которую я привязал к событию on-click, следующая:
(defun form1-default-button-2-on-click (dialog widget)
(declare (ignorable dialog widget))
t)
Как видите, здесь не хватает кода :) Я пробовал разные методы, например (setf (slot value :txt 'value) 'TEXT)
и (setf value 'TEXT)
но безрезультатно.
Слот элементов диалога в форме представляет собой список со следующими элементами, определенными
(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 "")
)
Любая помощь?Заранее спасибо.
Решение
(setf (slot-value widget 'value) "foo")
Что-то вроде вышеизложенного.Вам необходимо получить значение символа в правильном пакете.возможно, существует также функция доступа, такая как WIDGET-VALUE .Тогда (setf (виджет-значение виджета) «foo») может сработать...
Я не пользователь ACL — возможно, есть способы получше.Вопросы, касающиеся ACL, лучше всего задавать в списке рассылки пользователей.
Другие советы
Где-то на franz.com есть пример, где я нашел это:
(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
символ «szerkeszto» становится многострочным редактируемым текстом-1, тогда вы можете использовать setf, как указано выше, для установки соответствующих атрибутов (например, «значения»).
надеюсь это поможет.
Вам нужно использовать функции «найти-компонент» и «значение» вместе.
Функция «находка» находит виджет в вашем проекте, а «значение» возвращает значение виджета.
Если у вас есть статический текст в форме, вы можете изменить значение статического текста следующим образом.
(let ((ed1 (find-component: static-text-1: form1))) (setf (value ed1) «Я сделал это.»))