「スライダを処理する」の版間の差分
(ページの作成:「スライダからのアクションとコールバックを処理する場合、アプリケーションはコールバックで受け取る理由コードをチェッ…」) |
編集の要約なし |
||
1行目: | 1行目: | ||
DCL のスライダからのアクションとコールバックを処理する場合、アプリケーションはコールバックで受け取る理由コードをチェックする必要がある。 | |||
理由コードは必ずチェックしなくてはならないというわけではないものの、チェックすると処理が少なくて済むという利点がある。 | 理由コードは必ずチェックしなくてはならないというわけではないものの、チェックすると処理が少なくて済むという利点がある。 | ||
5行目: | 5行目: | ||
次の例は、スライダを処理する関数の基本的な使い方である。これは、スライダ タイルに関連付けられたアクション式から呼び出されている。関数で使用されている slider_info タイルは、スライダの現在値を 10 進表記で表示している。このようなタイルは編集ボックスでもあることが多く、その場合ユーザはスライダを操作するか、またはその値を直接入力できる。 | 次の例は、スライダを処理する関数の基本的な使い方である。これは、スライダ タイルに関連付けられたアクション式から呼び出されている。関数で使用されている "slider_info" タイルは、スライダの現在値を 10 進表記で表示している。このようなタイルは編集ボックスでもあることが多く、その場合ユーザはスライダを操作するか、またはその値を直接入力できる。 | ||
ユーザが slider_info に値を入力した場合、編集ボックスのコールバックは、次のようにそのスライダの値を更新する必要がある。 | ユーザが "slider_info" に値を入力した場合、編集ボックスのコールバックは、次のようにそのスライダの値を更新する必要がある。 | ||
(action_tile | (action_tile | ||
23行目: | 23行目: | ||
(defun slider_action(val why) | (defun slider_action(val why) | ||
(if (or (= why 2) (= why 1)) ; | (if (or (= why 2) (= why 1)) ; reason コードをチェック | ||
(set_tile "slider_info" val) ; | (set_tile "slider_info" val) ; 途中の値を反映 | ||
) | ) | ||
) | ) | ||
(defun ebox_action(val why) | (defun ebox_action(val why) | ||
(if (or (= why 2) (= why 1)) ; | (if (or (= why 2) (= why 1)) ; reason コードをチェック | ||
(set_tile "myslider" val) ; | (set_tile "myslider" val) ; 途中の値を反映 | ||
) | ) | ||
) | ) | ||
* memo | * memo | ||
互換CAD | 互換CAD では挙動が怪しいものがあるかもしれない。 |
2021年8月10日 (火) 09:40時点における最新版
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 では挙動が怪しいものがあるかもしれない。