フォームオブジェクトのデータソースには,Form.object.propertyのようなオブジェクト記法を設定することができます。スカラー型の変数やフィールドであれば,値を更新した直後のイベントサイクルでフォームオブジェクトが再描画されます。しかし,オブジェクトは参照型なので,プロパティの値を更新しても,オブジェクト自体が更新されるわけではありません。
過剰な再描画を避けつつ,値の更新を逃さないようにするため,4Dは内部的に更新スタンプを管理しています。それぞれのプロパティには更新スタンプが存在し,値が更新されると,スタンプがインクリメントされるようになっています。加えて,オブジェクト自体にも更新スタンプが存在し,いずれかのプロパティが更新されると,インクリメントされるようになっています。
4Dは,フォームを再描画するタイミングになると,まず,データソースの更新スタンプが変化しているかどうかをチェックします。プロパティのスタンプが変化していない場合,今度はオブジェクト自体のスタンプをチェックします。スタンプが変わっていないフォームオブジェクトは再描画されません。
問題は,オブジェクト型の計算属性です。計算属性は,実際のプロパティではないため,Function setで値を更新しても,スタンプがインクリメントされることはありません。他に更新したプロパティがなければ,オブジェクト自体のスタンプもインクリメントされません。そのため,属性に値を代入してもフォームが再描画されない,という現象が起きます。
フォームオブジェクトのデータソースに計算属性を使用している場合,このことに留意する必要があります。シンプルな対策として計算属性のFunction setで内部的な実際のプロパティ(たとえばThis._stamp)をインクリメントすることができます。計算属性にはスタンプがありませんが,同時に別のプロパティを更新するように計算属性を仕込んでおけば,オブジェクト自体のスタンプがインクリメントされ,実際のプロパティと同じように再描画されるようになります。
SET AUTOMATIC RELATIONSのスコープは「カレントプロセス」です。クライアント側でリレーション設定を変更した場合,その絵設定は「サーバー上で実行」メソッドを実行するサーバー側の同期プロセスには継承されません。これは仕様です。
(このコマンド)はカレントプロセスでデータベース全体のマニュアルリレートを一時的に自動リレートに変更します。
サーバー側の同期プロセスに継承され,「サーバー上で実行」メソッドやトリガで暗黙的に使用できるのは,セットと命名セレクション,ロックされたレコードやトランザクションの状態です。その他の情報(カレントセレクションなど)は,クライアント側とサーバー側で別々に管理されている点に留意してください。
4D View Pro(SpreadJS)は,Webエリア内で動作するアプリケーションなので,Webエリアに共通の制限が存在します。たとえば,セキュリティ上の理由により,キーボードショートカット入力中は標準ペーストボードにアクセスすることが禁止されているので,外部アプリケーションからコピーした画像をView Proエリアにペーストすることはできません。また,キーボードショートカットであれば外部アプリケーションからコピーしたテキストをペーストすることができますが,コンテキストメニューではペーストすることができません。これは仕様です。
イタリア語のシステムでは,小数点にピリオドではなくカンマを使用するのが一般的ですが,4D View Proではピリオドが表示されます。4D View Proがイタリア語のロケールをサポートしていないためです(フランス語のシステムではカンマが表示されます)。サポートされていないロケールを設定する必要がある場合,下記の資料を参照してください。 https://github.com/4d-depot/
v20r3以降,ローカル変数を二重に宣言した場合,コンパイラー警告(変数の再定義550.10)が表示されるようになりました。以前のバージョンでは,変数の型が矛盾しない限り,警告の対象ではありませんでした。変更の背景には,ランゲージの拡張に伴い,変数の宣言と同時に初期値の代入ができるようになったことが関係しています。もちろん,コンパイラー指示で警告を抑制することはできますが(下記参照),可能であれば,変数の宣言をまとめることを検討してください。
//%W-550.10
var $v : Text
C_TEXT($v)
//%W+550.10