SQLのCREATE TABLE
やDROP TABLE
でデータベースを変更した場合,クライアント側のストラクチャ情報が更新されるまで少しの時間が必要です。たとえば,SQLを実行した直後はテーブルやフィールドのポインターが作成できないかもしれません。これは仕様です。回避策としてIs table number valid
やIs field number valid
を使用することができます。これらのコマンドを実行することにより,該当する番号のテーブルまたはフィールドの存在がチェックされ,クライアント側のストラクチャ情報が更新されるためです。
Mac版でPRINT SETTINGS
を使用して印刷ダイアログを表示した場合,ポップアップメニューで「プレビューで開く」という項目を選択することができます。このオプションを使用した直後,同一プロセスで実行した印刷コマンドは,SET PRINT OPTION
でDestination option を1
(直接プリント)に指定したり,Print settings to BLOB
で印刷設定を元に戻したりしても,デフォルトで「プレビューで開く」が実行されることになります。これはオペレーションシステムの仕様です。 プレビュー設定を解除するためには,新規プロセスで印刷するか,下記のコードを実行する必要があります。
SET PRINT PREVIEW(False)
印刷ダイアログでファイル出力を選択した場合,Windowsプラットフォームでユーザーが指定したパスはそのままドライバーに渡されるため,macOSのようにGET PRINT OPTION
で取得することができません。これは仕様です。回避策としてファイル選択ダイアログを表示し,そのパスをSET PRINT OPTION
で指定することができるかもしれません。
v15以前に作成されたバイナリモードのリストボックスは,テキストのレンダリングにGDIを使用するようになっています。v16以降に作成されたものはDirectWriteを使用します。これは内部的なプロパティ設定であり,ドキュメントされていないデータベースパラメーター107
以外では読み書きすることができません。
19r3以降,高解像度ディスプレイを想定したデータベース設定「WindowsでのDirectWriteの使用」を有効化することができるようになりました。ただし,前述した「v15以前に作成されたバイナリモードのリストボックス」にはこの設定が適用されません。そのため,テキストが部分的にGDIでレンダリングされる,という状況が生じ得ます。たとえば,DirectWriteが有効なオブジェクトは絵文字がカラーで表示されるのに対し,GDIを使用しているリストボックスだけはモノクロで表示されるかもしれません。
19r8以降,クライアント/サーバー版またはリモートデータストアのエンティティセレクションはadd()
やminus()
を実行した場合,entitySelection.isOrdered()
がTrue
を返すようになりました。内部的にインデックスクエリと該当するセット演算を実行するようなクエリも同様です。エンティティセレクションの並び順が保持されることにより,さらに直感的なインターフェースがORDAで提供できるようになりました。
コレクション型はポインターをサポートしていますが,Find in array
とは違い,collection.indexOf()
はポインターのサーチをサポートしていないことに留意が必要です。位置をサーチできるのは下記のデータ型です。
フォームイベントのOn Getting Focus でALERT
を実行した場合,フォーカスを失ったテキスト入力オブジェクトがリドロー表示される前にアラートが表示されることになります。これはフォーカスを失ったオブジェクトの値をOn Getting Focus で更新した場合に画面がちらつくことを防止するための措置であり,仕様です。フォーカスの移動と同時にアラートを表示したいのであれば,On Getting Focus でALERT
を実行するのではなく,CALL FORM
やSET TIMER
などの非同期コマンドを使用し,フォーカスの移動とは別のイベントサイクルでモーダルダイアログを表示することを検討してください。
プロジェクトモードでは,階層リストなどのフォームオブジェクトにプロパティリストで選択/除外/指定リストを設定した場合,フォームの.4DForm ファイルにリストのlists.json に対する参照がJSONポインターで追加されます。
"list": {"$ref": "/SOURCES/lists.json#/MyList"}
フォームがロードされると,リストの参照もJSONポインター経由でロードされます。リスト名ではなく,参照でリストがロードされるため,フォーム実行時にOBJECT Get list name
を実行した場合,""
が返されます。これは仕様です。
なお,フォームエディターを使用せず,直接フォームの.4DForm ファイルを編集することもできます。
"list": "MyList"
この場合,JSONポインターの参照ではなく,名前でリストがロードされることになります(19r8以降)。