ハイライトボタンは,バイナリモードにだけ存在する旧式のフォームオブジェクトです。ハイライトボタンが配置されたフォームをプロジェクトモードに変換した場合,ハイライトボタンは透明ボタンになります。ボタンにヘルプTipsが設定されている場合,自動的に On Mouse Move イベントが有効となることにも留意してください。透明ボタンは画面にレンダリングされないため,ヘルプTipsを表示するためにはマウス移動イベントを有効にする必要があります。これは仕様です。
Mac版の4D v19は,Universal 2バイナリ形式で提供されており,x86_64とApple Silicon(ARMアーキテクチャ)のどちらでもインタープリター版のストラクチャをネイティブアプリとして実行することができます。
4DのコンパイラーはIntel(AMDアーキテクチャ)のコードを生成するように設計されていますが,MacにXcodeがインストールされていれば,メソッドのソースコードを clang コンパイラーに生成させることにより,Apple Siliconターゲットのアプリケーションをビルドすることもできます。
clang コンパイラーを利用してApple Siliconターゲットのコンパイルが実行できるのは,プロジェクトモードだけです。バイナリモード,つまり .4DB というファイル拡張子を持つストラクチャファイルをXcodeでコンパイルすることはできません。
互換性のために残されているバイナリモードでアプリケーションを開発している場合,データベースをプロジェクトモードの変換するか,IntelターゲットのアプリケーションをビルドしてRosetta 2で4Dを起動するか,コンパイルせずにインタープリターモードでアプリケーションを運用するか,よく検討した上で決定することになります。一旦,変換したストラクチャをバイナリモードに戻すことはできません。
初期の4Dはコンパイルすることにより大幅な速度の向上が望めましたが,現在ではインタープリターモードでも快適に動作しますので,さほどパフォーマンスに差はないと考えられています。
4DはRosetta 2でサポートされていない特殊な実行ファイルではありませんが,AppleはRosetta 2トランスコーダーの詳細を公開していないため,RosettaモードでIntelやApple SiliconネイティブのMacと違う振る舞いをする可能性がないとは言えません。問題があるとすれば,浮動小数点演算など,CPUに対する直接的な命令の実行でしょう。たとえば,4Dで0による整数除算(%演算子)を実行した場合,通常はエラーが返されませんが,Rosettaコンパイルモードではエラーが返されます。0による除算は正しい結果が定義されていないので,Rosettaの実装による違いであり,4Dの不具合ではありません。なお,コンパイルの対象となる演算子を記述せず,同等の演算をするMod関数を実行すれば,インタープリターモードと同じ振る舞いになります。これは仕様です。
論理積演算子と比較演算子が併用された場合,左から右に向かって式が評価されます。演算子の種類による優先順位はありません。これは仕様です。たとえば
$boolean:=False
$text:="foo"
$result:=$text="" && $boolean=False
のようなコードを実行した場合,FalseではなくTrueが返されます。
$result:=(($t="") && ($b=False))
$result:=((($t="") && $b)=False)
左から右に向かって式が評価されるため,論理積演算ではなく,False=Falseという比較演算になっている点に注目してください。こうしたエラーを避けるため,明示的ばカッコを記述することが勧められています。
エンティティセレクション型のリストボックス列にThis.relatedEntity.objectAttribute.propertyのようにリレーション属性とオブジェクト記法を組み合わせたORDAパスを記述した場合,ヘッダークリックによる並び替えで属性”objectAttribute.property”が見つからないというエラーが返されます。これは仕様です。ヘッダークリックによる並び替えは内部的にorderByFormula()ではなくorderBy()を実行しています。
純粋なORDAパスではなく,フォーミュラがデータソースに設定されているリストボックス列の並び替えは On Header Click イベントで実装する必要があります。
ペーストボードの管理で説明されているように,Pasteboard data sizeは,下記のデータタイプ識別子をサポートしています。
上記に加え,TEXT PICTなどの4文字識別子が「以前のバージョンの4Dとの互換性のために」残されています。TEXTつまりText data定数は,UTIのcom.apple.tradional-mac-plain-textを指している点に留意してください。コピー元のアプリケーションがこのタイプのデータをペーストボードに転写していない場合,Pasteboard data sizeは-102つまり「データなし」を返します。これは仕様です。
Sequence numberから返されるシーケンス番号は,SAVE RECORDで新規レコードを保存するたびにインクリメントされます。SQLのINSERTやORDAのentity.save()ではインクリメントされません。これは仕様です。
Write Proドキュメントには,既定の属性に加え,任意のカスタム属性を設定することができます。WP Import documentで.docx ファイルをインポートした場合,wk import log属性に変換ログが記録されますが,これは任意のカスタム属性に分類されるため,WP GET ATTRIBUTESで参照することはできません。これは仕様です。
フォームマクロを活用すれば,フォームエディターに対する操作はなんでも自動化することができます。マクロのonInvoke()関数に渡されるForm Editor Macro Proxy オブジェクトの $editor を介して加えて変更はエディターに即反映されますが,直接 .4DForm ファイルに加えた変更はエディターに反映されません。これは仕様です。デザインモードでは,4Dが最前面に復帰したタイミングでソースファイルがリロードされます。
任意のタイミングでリロードさせたいのであればRELOAD PROJECTを実行することができます。