開発者の中には、自動アクションは初心者のためのものだと考えている人がいます。しかし、彼らは私たちが過去数年間に追加した多くの可能性を見逃しているかもしれません。標準的なアクション、たとえば First Recordまたは color?value=redのような標準的なアクションは、ユーザーインターフェイスのボタンに割り当てたり、プログラミングで指定することができます。アクションは、メニュー項目やコンテキストメニューに割り当てたり、コマンドで呼び出したりすることができます。アクションが適用されない場合(例えば、次のレコードがない場合など)、4Dはメニュー項目やボタンの無効化も自動的に処理することができるという利点があります。
4DWrite Proと Styled Textには 、100以上の新しいスタンダードアクションが追加され、一行のコードも書かずにツールバーなどを構築することができます!また、4D v16 R3からは、スタンダードアクションのリストは、さらに充実しています。
まとめると、標準アクションは、3つの異なる方法で使用できます。
- 標準アクションをオブジェクトに関連付ける:設計段階(プロパティリストを使用)またはプログラミングで。
- 標準アクションをメニュー項目に関連付ける: 設計段階 (ツールボックスを使用) またはプログラミングによる
- 新しいINVOKE ACTION と Get action info コマンド
標準アクションをオブジェクトに関連付ける
設計段階
プロパティリストを使用すると、標準アクションをアクティブなフォームオブジェクトに関連付けることができます。この例では、「レコードの削除」標準アクションをボタンに関連付けます。
詳細については、ドキュメントのこの記事を参照してください。
プログラミングによる
アプリケーションの実行中に、プログラミングによって現在のプロセスに標準アクションをオブジェクトに動的に関連付けることができます。つまり、プロパティ一覧で定義された標準アクションを上書きするわけです。
例えば、標準のアクションを “btn “に関連付けるとします。 Delete Record 標準アクションを “btnDelete “ボタンに関連付けるとします。
OBJECT SET ACTION(*; "btnDelete";ak delete record
)または、定数の代わりに値を使用する場合。
OBJECT SET ACTION(*; "btnDelete"; "deleteRecord") となります。
また、定数の代わりに値を使用する場合は、アクションと一緒にパラメータを渡すこともできます。この例では、選択されたテキストにマゼンタ色を適用しています。
OBJECT SET ACTION(*; "btnDelete"; "color?value=magenta")
詳細は、各コマンドのドキュメントを参照してください。
メニュー項目に標準アクションを関連付ける
設計段階において
メニューエディタを使用して、標準アクションをメニューアイテムに割り当てることができます。例えば、4D Maintenance and Security Centerを開くためのメニュー項目を追加するには、ポップアップウィンドウで関連する標準アクションとして mscアクションを標準アクションとして選択します。
アプリケーションを実行すると、メニューが表示されます。
何らかの標準的なアクションでサブメニューを作成することができます。例えば、フォントのスタイル(ボールド、イタリック…)を適用するためのサブメニューを追加するには、ポップアップメニューで関連する標準アクションとしてアクションを選択するだけです。 fontStyleアクションを選択します。
アプリケーションを実行すると、メニューが表示されます。
詳しくは、ドキュメントのこの記事を参照してください。
プログラミングで
SET MENU ITEM PROPERTY コマンドに標準アクションを渡すこともできます。4D v16 R3以降では、APPEND MENU ITEM コマンドにタイトル名の代わりにak standard action title 定数を渡すと、4Dはローカライズされたアクション名を使用します。
例えば、ポップアップメニューに、最初、最後、次のレコードに移動するメニュー項目を追加する場合、次のようなコードを記述します。
- Formメソッドで。
Case of
: (Form event=On Load) := ( ; ) ( ;-1; ; ) ( ; ) ( ;-1; ; ) ( ; ) ( ;-1; ; ) :( = ) ( )
// create menu
menu //insert last record menu itemCreate menu
//insert first record menu item
APPEND MENU ITEMmenuak standard action title
SET MENU ITEM PROPERTYmenuAssociated standard actionak first record
APPEND MENU ITEMmenuak standard action title
SET MENU ITEM PROPERTYmenuAssociated standard actionak last record
//insert next record menu item
APPEND MENU ITEMmenuak standard action title
SET MENU ITEM PROPERTYmenuAssociated standard actionak next record
Form eventOn Unload
// release menu
RELEASE MENUmenu
End case
- ポップアップメニューを表示するbuttonメソッドで。
$val:=Dynamic pop up menu(menu)
これで、異なる言語でアプリケーションを実行すると、メニューが表示されるようになります。
詳しくは、これらのコマンドのドキュメントを参照してください。
- GET MENU ITEM PROPERTY command
- SET MENU ITEM PROPERTY command
- APPEND MENU ITEM コマンド
- INSERT MENU ITEM コマンド
INVOKE ACTION コマンド
となります。 INVOKE ACTIONコマンドは、4D v16 R3で追加され、actionパラメータで定義された標準アクションをトリガーします。 targetのコンテキストで定義された標準アクションをトリガーします。標準アクションが現在のコンテキストで適用可能かどうか、有効かどうかを知るには、新しい Get action infoコマンドを使用します。
構文は次のとおりです。
例えば、MSCのオープンを変更する場合は、次のように記述します。
C_OBJECT
($actionInfo)
// Check if this standard action is available and valid in this current context
$actionInfo :=Get action info(ak paste;ak current form)
If (OB Get($actionInfo; "enabled"))
// This standard action is enabled INVOKE ACTION (ak paste;ak current form)
Else ALERT ("This action is impossible. The clipboard is empty.")
End if
詳細は、これらのコマンドのドキュメントをお読みください。