문제

기본 버튼을 클릭하여 Allegro CL (버전 8.0.1)에서 편집 가능한 텍스트 컨트롤의 값을 변경하려고합니다.

나는 읽었다 (setf value) 그러나 사례를 찾지 못했습니다.

온 클릭 이벤트에 tteached 한 기능은 다음과 같습니다.

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

도움이 있습니까? 미리 감사드립니다.

도움이 되었습니까?

해결책

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

위와 같은 것. 올바른 패키지에서 기호 값을 가져와야합니다. 아마도 위젯 값과 같은 액세서 기능도있을 것입니다. 그런 다음 (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를 사용하여 "값"과 같은 적절한 속성을 설정할 수 있습니다.

도움이 되었기를 바랍니다.

"찾기 구성 요소"및 "value"기능을 함께 사용해야합니다.

"찾기 구성 요소"함수는 프로젝트에서 위젯을 찾고 "값"은 위젯의 값을 반환합니다.

양식에 정적 텍스트가있는 경우 이와 같이 정적 텍스트의 값을 변경할 수 있습니다.

(let (ed1 (찾기 구성 요소 : static-text-1 : form1))) (setf (value ed1) "I made it.")

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top