DOM Parse XML variableには,テキスト型またはBLOB型の変数またはフィールドを渡す必要があります。オブジェクト型のプロパティ,たとえば$obj.dataのようなテキスト値を渡すことはできません。これは仕様です。ランゲージの設計上,変数と値には違いがあり,値を受け取るコマンドに変数を渡すことはできますが,その逆はできません。似たような例としてValue typeには値を渡すことができますが,Typeには変数またはフィールドしか渡せません。変数と値には違いがある,という点に留意してください。
パラメーター型を宣言する新しいvarシンタックスでは,暗黙的に任意のパラメーターを宣言することができません。つまり,C_VARIANT($0;${1})"のようなことができません。これは仕様です。パラメーター数が事前に決まっていない場合,コレクション側を使用することを検討してください。
プロジェクトモードでは,フォームのタイプによって保存されるプロパティに違いがあります。これは仕様です。詳細フォーム(スクリーン用・印刷用)では,フォームの境界だけが保存されます。リストフォーム(スクリーン用・印刷用)では,境界・マーカー・マーカーラベルが保存されます。つまり,詳細フォームにはマーカーのが存在しません。フォームのタイプを後から変更した場合,該当しないプロパティは(プロパティリストに表示されるとしても)保存されませんので注意してください。
On Display Detailフォームイベント中にOBJECT SET COORDINATESでオブジェクトの位置やサイズを変更することはしないでください。この点はドキュメントに明記されています。
Windows版では,画面の描画に使用されているシステムAPIの関係で,実際にはOn Display Detailフォームイベント中にコマンドを使用することができます。しかし,macOSではウィンドウの描画が最適化されているため,同じような振る舞いになりません。
リストの詳細行に配置されたオブジェクトでプログレスバーのようなユーザーインタフェースを実現するのであれば,四角形をリサイズするのではなく,SVGピクチャまたは進捗バーオブジェクトの使用を検討してください。
コンパイラー設計上の制約により,下記のようなコードはコンパイルモードで動作しません。
GET LISTBOX CELL POSITION(Self->;col;row;var)
問題を回避するためには,ポインターの逆参照をローカル変数に代入した上で,パラメーターとして渡すことができます。
$ptr:=Self
GET LISTBOX CELL POSITION($ptr->;col;row;var)
Selfだけでなく,ポインターを返すコマンドの逆参照を直接パラメーターとして渡した場合,正しいコードがコンパイルされません。これは仕様です。
v18では,プロジェクトメソッドをプリエンプティブモードで実行できるようにするため,スレッドセーフではないコマンドのチェックを部分的にスキップすることができるようになりました。チェックを無効化するためには,下記のようにアンセーフなコマンドの前後にコンパイラー指示を記述します。
//%T
SET MENU BAR(1) //not thread safe
//%T+
このテクニックは,論理的な条件分岐により,スレッドセーフではないコマンドがプリエンプティブモードで実行されることはないとわかっているような場合に有用です。
チェックの対象から外されるのは,4Dコマンドだけであることに留意してください。プリエンプティブモードで実行できないプロジェクトメソッドをチェックから除外することはできません。
この点はドキュメントに明記されています。
新規プロセスで作成したウィンドウの初期座標をメインモニター以外に設定した場合,ウィンドウがすぐには表示されないことがあります。これはMac版の仕様(修正できない問題)であると考えられています。
Open form windowとDIALOGの間にWINDOW LISTを呼び出した場合On LoadイベントでWINDOW LISTを呼び出した場合問題を回避するためには,メインモニターにOpen form windowでウインドウを表示した後,SET WINDOW RECTで移動することができます。
クライアント/サーバー版のORDAでデータストアクラスの戻り値($0)にエンティティやエンティティセレクションをそのまま返すことはできますが,オブジェクト型のプロパティにンティティやエンティティセレクションを設定して返すことはできません。ORDAオブジェクトだけでなく,JFile Folderなど,JSONにシリアライズできないナイティブ(C++)オブジェクトは,いずれもRESTサーバーから返すことができません。メンバーメソッドからダイレクトに返せるという点で,エンティティやエンティティセレクションは例外的な存在です。ダイレクトであればORDAで返せるオブジェクトには,ピクチャ・Write Proドキュメント・View Proドキュメントが含まれます。
スタンドアロン版であれば問題がなく,クライアント/サーバー版で替さえれるエラーメッセージ(不正なJSON)が直接的ではないという点で意表を突かれたように感じるかもしれませんが,これは仕様です。なお,ORDAオブジェクト(データストア・データクラス・エンティティ・エンティティセレクション)に加え,ポインター型もオブジェクト型のプロパティとしてRESTサーバーから返すことができません。