【问题标题】:Change an editable-text value in Allegro CL在 Allegro CL 中更改可编辑文本值
【发布时间】:2010-02-10 19:59:18
【问题描述】:

我正在尝试通过单击默认按钮来更改 Allegro CL(8.0.1 版)中可编辑文本控件的值。

我已阅读有关 (setf value) 的信息,但没有找到任何示例。

我附加到点击事件的功能如下

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

    t)

如您所见,其中缺少代码 :) 我尝试了各种方法,例如 (setf (slot value :txt 'value) 'TEXT)(setf value 'TEXT),但无济于事。

表单上的 dialog-items 插槽是一个列表,其中包含由以下元素定义的列表

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

有什么帮助吗?提前致谢。

【问题讨论】:

    标签: lisp common-lisp clos allegro-cl


    【解决方案1】:
    (setf (slot-value widget 'value) "foo")
    

    类似于上面的东西。您需要在正确的包中获取符号值。可能还有一个像 WIDGET-VALUE 这样的访问器函数。然后 (setf (widget-value widget) "foo") 可能会工作......

    我不是 ACL 用户 - 可能有更好的方法。最好在其用户邮件列表中询问 ACL 特定问题。

    【讨论】:

    • 带有'slot-value'的解决方案不起作用,带有widget-value的解决方案也不起作用。
    • 这是一个提示,但您确实应该使用 ACL 邮件列表。 franz.com/support/acl.forum.lhtml
    【解决方案2】:

    我在 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
    

    symbol "szerkeszto" 变成 multi-line-editable-text-1,然后你可以像上面一样使用 setf 来设置合适的属性(比如 "value")。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      你需要同时使用“find-component”和“value”这两个函数。

      “find-component”函数在您的项目中查找小部件 “value”返回小部件的值。

      如果表单中有静态文本,则可以像这样更改静态文本的值。

      (let ((ed1 (find-component :static-text-1 :form1))) (setf (value ed1) "我做到了。"))

      【讨论】:

        猜你喜欢
        • 2014-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-22
        相关资源
        最近更新 更多