概要 - アクション式とコールバック(DCL)

ダイアログ ボックスで特定のタイルが選択され、action_tile 関数を呼び出すことによって、このタイルに AutoLISP 式が割り当てられると、アクションが実行されます。

注: AutoLISP での DCL のサポートは Windows のみに制限されています。

これをアクション式といいます。アクション式の中では、DCL ファイル内の属性にアクセスしなければならないことがよくあります。これには、get_tile 関数と get_attr 関数を使用します。

アクション式は、new_dialog の呼び出しの後の、start_dialog の呼び出しの前に定義しなくてはなりません。

ユーザがどのタイルを選択したか、またはどのようにタイルの内容を変更したかに関する情報は、コールバックとしてアクション式に返されます。ほとんどの場合、ダイアログ ボックス内のすべてのアクティブ タイルはコールバックを生成できます。リアクタと同様、コールバックに応答するアクション式を一般にコールバック関数といいます。この関数では、関連するタイルの有効性をチェックするだけでなく、ダイアログ ボックス内でそのタイルの値に関係する情報を更新する必要もあります。ダイアログ ボックスの更新処理には、エラー メッセージを表示する、他のタイルを使用禁止にする、編集ボックスまたはリスト ボックスに適切な文字を表示するなどがあります。

タイル値を調べて、ユーザが最終的に選択した設定を保存するのは、[OK]ボタン(またはそれに相当するボタン)だけでなくてはなりません。つまり、個々のタイルに対するコールバック内ではなく、[OK]ボタンに対するコールバック内でタイル値に関係する変数を更新する必要があります。常設変数を個々のタイル コールバック内で更新すると、ユーザが[キャンセル]ボタンを選択したときに値をリセットする方法がありません。[OK]ボタンのコールバックがエラーを検出した場合は、エラー メッセージを表示して、エラーとなっているタイルにフォーカスを戻すようにしなければなりません。つまり、ダイアログ ボックスを閉じてはいけません。

処理内容が似ている複数のタイルがダイアログ ボックスにある場合、これらのタイルを 1 つのコールバック関数に関連付けると便利です。この場合でも、ユーザが[OK]をクリックするまではユーザの変更が確定されないという原則が適用されます。

action_tile を呼び出す以外にも、アクションを定義する方法は 2 つあります。その 1 つは、new_dialog を呼び出すときにダイアログ ボックス全体に対して既定のアクションを定義する方法です。もう 1 つは、タイルの action 属性を使用してアクションを定義する方法です。アクションを定義するそれぞれの方法と、アクションが起こる順序。