سؤال

أحاول تغيير قيمة عنصر تحكم نص قابل للتحرير في Allegro CL (الإصدار 8.0.1) بالنقر فوق الزر "افتراضي".

لقد قرأت عن (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 "")
 )

أي مساعدة؟ شكرا مقدما.

هل كانت مفيدة؟

المحلول

(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 مثل ما ورد أعلاه لتعيين السمات المناسبة (مثل "القيمة").

أتمنى أن يساعدك هذا.

تحتاج إلى استخدام وظائف "البحث عن المكون" و "القيمة" معا.

تكتشف وظيفة "Find-Component" القطعة في مشروعك و "القيمة" بإرجاع قيمة القطعة.

إذا كان لديك نص ثابت في نموذج، فيمكنك تغيير قيمة النص الثابتة مثل هذا.

(دع ((ED1 (Find-Component: ثابت نص-1: Form1))) (SETF (القيمة ED1) "قمت بإجراء ذلك"))

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top