2010-02-10 41 views
1

我試圖通過單擊默認按鈕來更改Allegro CL(版本8.0.1)中的可編輯文本控件的值。在Allegro CL中更改可編輯文本值

我已閱讀關於(setf value),但還沒有找到任何示例。

我已經ttached,在那裏,點擊事件的函數如下

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

任何幫助定義包含以下元素的列表?提前致謝。

回答

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

就像上面那樣。您需要獲取正確包裝中的符號值。可能還有一個訪問函數,如WIDGET-VALUE。然後(setf(小部件值小部件)「foo」)可能會工作...

我不是一個ACL用戶 - 可能有更好的方法。在他們的用戶郵件列表上最好詢問ACL特定的問題。

+0

與 '槽值' 將溶液不起作用,也不會使用widget值。 – foliveira

+0

這是一個提示,但你真的應該使用ACL的郵件列表。 http://www.franz.com/support/acl.forum.lhtml –

0

有一個例子某處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像上面設置適當的屬性(如「值」)。

希望這有助於。

0

您需要將函數「find-component」和「value」一起使用。

函數「find-component」在您的項目 中查找小部件,「value」返回小部件的值。

如果您在表單中有靜態文本,您可以像這樣更改靜態文本的值。

(讓((ED1(找到組分:靜態文本-1:form1中))) (SETF(值ED1) 「我使它」))

相關問題