スライダを処理する

提供:GizmoLabs - だいたい CAD LISP なサイト

DCL のスライダからのアクションとコールバックを処理する場合、アプリケーションはコールバックで受け取る理由コードをチェックする必要がある。 理由コードは必ずチェックしなくてはならないというわけではないものの、チェックすると処理が少なくて済むという利点がある。

コールバックは、スライダの増分境界を横切るときに起こる。たとえば、スライダが最小値 0(ゼロ)、最大値 10、およびその両方の小増分と大増分が 1 で定義されている場合、ユーザがスライダの一方の端からもう一方の端まで動かすと、コールバックは 10 回呼び出される。


次の例は、スライダを処理する関数の基本的な使い方である。これは、スライダ タイルに関連付けられたアクション式から呼び出されている。関数で使用されている "slider_info" タイルは、スライダの現在値を 10 進表記で表示している。このようなタイルは編集ボックスでもあることが多く、その場合ユーザはスライダを操作するか、またはその値を直接入力できる。 ユーザが "slider_info" に値を入力した場合、編集ボックスのコールバックは、次のようにそのスライダの値を更新する必要がある。

(action_tile
  "myslider"
  "(slider_action $value $reason)"
)

(action_tile
  "slider_info"
  "(ebox_action $value $reason)"
)

.
.
.

(defun slider_action(val why)
  (if (or (= why 2) (= why 1))   ; reason コードをチェック
    (set_tile "slider_info" val) ; 途中の値を反映
  )
)

(defun ebox_action(val why)
  (if (or (= why 2) (= why 1))   ; reason コードをチェック
    (set_tile "myslider" val)    ; 途中の値を反映
  )
)


  • memo

互換CAD では挙動が怪しいものがあるかもしれない。