4D v14.3Command name |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v14.3
Command name
|
Command name ( command ) -> 戻り値 | ||||||||
引数 | 型 | 説明 | ||||||
command | 倍長整数 |
![]() |
コマンド番号 | |||||
戻り値 | 文字 |
![]() |
ローカライズされたコマンド名 | |||||
Command name コマンドは、引数commandに渡したコマンド番号のコマンド名を返します。
4Dは、メソッドで使用するキーワード、定数、およびコマンド名の動的な翻訳を統合しています。4Dの日本語版を使用している場合、次のように記述します:
DEFAULT TABLE([MyTable])
ALL RECORDS([MyTable])
同じコードがフランス語版の4Dでは以下のようになります:
TABLE PAR DEFAUT([MyTable])
TOUT SELECTIONNER([MyTable])
ただし、4Dにはユニークな機能である EXECUTE FORMULA コマンドがあり、これを使用すると、データベースがコンパイルされていてもただちにコードを作成して、このコードを実行することができます。
日本語版で EXECUTE FORMULA 文を使用して作成されたコードの例は、以下のようになります:
EXECUTE FORMULA("DEFAULT TABLE([MyTable])")
EXECUTE FORMULA("ALL RECORDS([MyTable])")
同じコードがフランス語版の4Dで開かれると以下のようになります:
EXECUTER FORMULE("DEFAULT TABLE([MyTable])")
EXECUTER FORMULE("ALL RECORDS([MyTable])")
4Dは、EXECUTE FORMULA(日本語版)をEXECUTER FORMULE(フランス語版)に自動で翻訳しますが、コマンドに渡したテキスト文を翻訳することはできません。
アプリケーションで EXECUTE FORMULA コマンドを使用する場合には、Command nameを使用して異なる言語間のローカライズにおける実行文の問題を解決し、文を言語に依存しないようにすることができます。コードの例は、以下のようになります:
EXECUTE FORMULA(Command name(46)+"([MyTable])")
EXECUTE FORMULA(Command name(47)+"([MyTable])")
4Dのフランス語版を使用すると、このコードは以下のようになります:
EXECUTER FORMULE(Nom commande(46)+"([MyTable])")
EXECUTER FORMULE(Nom commande(47)+"([MyTable])")
注: コマンド毎のコマンド番号は、コマンドドキュメントのプロパティエリアに書かれています。
Command name コマンドはcommand 変数の番号がが既存のコマンド番号に対応する場合にはOK 変数が1に設定され、それ以外の場合には0が設定されます。しかしながら、既存のコマンドの一部には無効化されてしまったコマンドもあり、そういったコマンドの場合にはCommand name は空の文字列を返すという点に注意が必要です(最後の例題を参照して下さい)。
データベースのすべてのテーブルについて、各テーブルの標準データ入力に使用するための“INPUT FORM”というフォームがあります。そこで、ポインタまたはテーブル名を渡すテーブルのカレント入力フォームとしてこのフォームを設定する、汎用的なプロジェクトメソッドを追加する場合には、次のように記述します:
` STANDARD INPUT FORM project method
` STANDARD INPUT FORM ( ポインター {; 文字 })
` STANDARD INPUT FORM ( ->Table {; TableName })
C_POINTER($1)
C_STRING(31;$2)
If(Count parameters>=2)
EXECUTE FORMULA(Command name(55)+"(["+$2+"];"+Char(Double quote)+"INPUT FORM"+Char(Double quote)+")")
Else
If(Count parameters>=1)
FORM SET INPUT($1->;"INPUT FORM")
End if
End if
このプロジェクトメソッドがデータベースに追加された後、以下のように記述します:
STANDARD INPUT FORM(->[Employees])
STANDARD INPUT FORM("Employees")
Note: 通常、汎用ルーチンを記述する場合には、ポインタを使用することをお勧めします。その理由としては、まず、データベースがコンパイルされているとき、そのコードもコンパイルモードで実行されるからです。次に前述の例でもあるようにテーブルの名前を変更すると、コードは正しく動作しなくなるためです。ただし、EXECUTE FORMULAコマンドを使用すれば問題が解決する場合もあります。
フォームで、一般的なサマリーレポートコマンドのドロップダウンリストを作成します。ドロップダウンリストのオブジェクトメソッドに、次のように記述します:
Case of
:(Form event=On Before)
ARRAY TEXT(asCommand;4)
asCommand{1}:=Command name(1) ` Sum
asCommand{2}:=Command name(2) ` Average
asCommand{3}:=Command name(4) ` Min
asCommand{4}:=Command name(3) ` Max
` ...
End case
4Dの日本語版ではドロップダウンリストに、Sum、Average、Min、Maxが表示されます。フランス語版では、ドロップダウンリストには、Somme、Moyenne、Min、Maxが表示されます。
以下のコードを使用すると、全ての有効な4Dコマンドを配列内に読み込むことができます:
C_LONGINT($Lon_id)
C_TEXT($Txt_command)
ARRAY LONGINT($tLon_Command_IDs;0)
ARRAY TEXT($tTxt_commands;0)
Repeat
$Lon_id:=$Lon_id+1
$Txt_command:=Command name($Lon_id)
If(OK=1) // コマンド番号が存在する
If(Length($Txt_command)>0) // コマンドが無効化されていない
APPEND TO ARRAY($tTxt_commands;$Txt_command)
APPEND TO ARRAY($tLon_Command_IDs;$Lon_id)
End if
End if
Until(OK=0) //既存のコマンドの終わり
プロダクト: 4D
テーマ: ランゲージ
番号:
538
初出: 4D v6
ランゲージリファレンス ( 4D v12.4)
ランゲージリファレンス ( 4D v14 R2)
ランゲージリファレンス ( 4D v14 R3)
ランゲージリファレンス ( 4D v13.5)
ランゲージリファレンス ( 4D v14.3)
ランゲージリファレンス ( 4D v14 R4)
Inherited from : Command name ( 4D v11 SQL Release 6)