Current method name
をフォームメソッド内でコールした場合,コンパイルモードではフォーム名に出現する最後のピリオド以降の文字列が返されます。これは仕様です。たとえば,Invoice.Output.Dialog
のような名前をフォームに設定した場合,Dialog
だけが返されます。フォーム名にピリオドは使用しないでください。
ユーザーモードのメニュー項目「ファイル > 読み込み > ODBCソースから読み込み」および「ファイル > 書き出し > データをODBCソースに書き出し」は,64ビット版でdisabled
状態となっています。IMPORT ODBC
EXPORT ODBC
も64ビット版では使用できません。これは仕様です。ODBC経由でデータの読み書きをするのであれば,標準のSQLコマンドを使用してください。
注記: 32ビット版アプリケーションは,17r4が最後のリリースとなります。17r5以降,4Dおよび4D Serverは64ビット版アプリケーションのみのリリースとなり,32ビット版は提供されません。
17r3以降,スプレッドシートをVP EXPORT DOCUMENT
で.xlsx
形式でエクスポートすることができるようになりました。.4vp
形式を指定した場合,コマンドは同期処理でファイルを書き出しますが,.xlsx
形式を指定した場合,非同期処理でファイルを書き出した後,コールバックとして渡されたFormula
オブジェクトが実行されるようになっています。On Close Box
フォームイベントでコマンドを実行した場合,ウィンドウが閉じられることにより,非同期処理がアボートされてしまうため,.xlsx
形式のエクスポートはキャンセルされてしまいます。これは仕様です。ダイアログの終了と同時にエクスポートを実行するのであれば,コールバックとして渡されたFormula
オブジェクトが実行された後にウィンドウを閉じるようにしてください。
17r3は,v2004のストラクチャファイルを開くことができる最後のバージョンです。v17r4で開こうとすると「データベースストラクチャが無効です。バージョンが古すぎるか,ファイルを修復する必要があります」というエラーが返されます。これは仕様です。
Write Pro文書・画像・セクション・段落のボーダー(罫線)は,コンテキストメニュー,またはWP SET ATTRIBUTES
とwk border style
wk border width
の組み合わせで設定することができますが,テーブル全体や特定の行列のボーダーは設定することができません。これは仕様です。
ボーダーは,テーブル・行・列ではなく,セルの属性です。テーブル全体や特定の行列のボーダーする場合,下記のようにセルの集合を取得した上でWP SET ATTRIBUTES
を使用します。
$table:=WP Get element by ID($wp;"t1")
$cells:=WP Table get cells($table;1;1;MAXLONG;MAXLONG)
WP SET ATTRIBUTES($cells;wk border style;wk none)
v16では,リスト型のサブフォームダブルクリックすると,FORM SET INPUT
で指定した入力フォームに切り替わりましたが,v17では常にデフォルトの入力フォームが使用され,FORM SET INPUT
で指定したフォームは使用されません。これは仕様です。以前の振る舞いはバグであり,意図的な設計によるものではありませんでした。サブフォームの内容は,OBJECT SET SUBFORM
で明示的に切り替えることができます。
追記: ビルド237123
以降,仕様が見直され,サブフォームに対してFORM SET INPUT
が使用できるようになりました。(ACI0099331)
オブジェクト型のプロパティは,フィールドや従来の変数とは違い,タイプが固定されていません(「強い型付け」)。C_PICTURE
で型が宣言されたピクチャ変数にNull
を代入した場合,変数の内容がクリアされますが,型は変わりません(CLEAR VARIABLE
またはpicture:=picture*0
と同じ)。対照的に,ピクチャ型のオブジェクトプロパティにNull
を代入した場合,プロパティは0
バイトのピクチャではなく,Null
になります。Write ProやORDAも同じ振る舞いになります。これは仕様です。
オブジェクト記法およびコレクション型がランゲージに追加されるまで,オブジェクト型の読み書きにはOB
で名前が始まるコマンドが使用されていました。OB
コマンドは廃止予定ではありませんが,オブジェクト記法(ドット記法とブラケット記法)をサポートしていないことに留意する必要があります。たとえば,下記の例で[Person]family
はオブジェクト型のフィールドですが,コードを実行するとエラーが返されます。これは仕様です。
OB SET ARRAY([Person]family.children[0];"ID";$IDs)