V15 スタンドアロンアプリケーションをビルドした際の画面の大きさ制御について

Product :4D - 4D Server
4D : v15.4

いつもお世話になっております。
日本電子計算の能瀬と申します。

スタンドアロンアプリケーションをビルドした際、起動後に表示される画面の大きさを
指定したサイズにしたいと考えています。

初期の大きさを制御する方法をご存知の方がおられましたら、教えていただきたいです。

よろしくお願いいたします。

MDIフレームウィンドウの座標を制御したい,ということでしょうか。

一般に,リサイズ/移動できるウィンドウの位置とサイズは,
アプリケーション毎にシステムによって管理されており,
起動時に自動的に再現されるようになっています。

APIコールで強制的にサイズを指定することもできますが,
システム本来の振る舞いではないことに留意してください。

https://github.com/miyako/4d-plugin-mdi
https://github.com/miyako/4d-plugin-window-control

MDIアプリケーションである4Dを擬似的なSDIのように動かしているのであれば,
V16R4以降の」SDIモード」を検討することをお勧めします。

http://doc.4d.com/4Dv16R4/4D/16-R4/SDI-mode-on-Windows.300-3331617.ja.html

失礼します。
日本電子計算の能瀬です。
返答が遅くなり申し訳ありません。

宮古様、ご返答ありがとうございます。
参考にさせていただきます。

あれからテストをした結果ですが、
Startupでdialog命令で画面表示のサイズの制御が正しく動作していない様です。
古い4Dからバージョンアップを行なっている関係かもしれません。
もう少し調べてから投稿するべきだったと反省しています。

ありがとうございました。

昔の4Dには,実験的なコマンドを集めた,ACI Pack (4D Pack) という名称のユーティリティが存在しました(v16で廃止)。

その中にAP SET PARAMというコマンドがあり,MDIフレームウィンドウの位置を制御することができました(v11で廃止)。

http://www.4d.com/docs/CMJ/CMJ61958.HTM

AJP SET FRAME WINDOW SIZEという似たようなコマンドが4D Japan Packにもありました(v2003で廃止)。

http://library.4d-japan.com/REFERENCE/2003/2003_4d_j_pack.pdf

なお,標準コマンドのGET WINDOW RECTは,-1でMDIフレームウィンドウの位置を返しますが,SET WINDOW RECTのほうが-1を認識しない点に留意する必要があります。

http://doc.4d.com/4Dv15/4D/15.5/GET-WINDOW-RECT.301-3577420.ja.html
http://doc.4d.com/4Dv15/4D/15.5/SET-WINDOW-RECT.301-3577419.ja.html

宮古様 色々と情報ありがとうございます。
4D Japan Packは4.6.9で組み込んでいましたが、AJP SET FRAME WINDOW SIZEは使っていませんでした。

画面の大きさに付いては、古いフォームだとプロパティリストのフォームサイズのサイズを決めるものを設定してても
画面サイズが制御されませんでしたが、フォームを新規で再作成してみたところ、画面のサイズの制御が正常に動作しました。
アプリケーションビルド後も問題ありません。

このアプリケーションビルド後の画面サイズですが、アプリケーションをコピーした際に、初期サイズが他のアプリケーションの
終了サイズとなります。
これはInfo.plistのCFBundleNameのstring値を変更して対応するので問題ないでしょうか?

v2003以前に作成されたフォームには,

制約付き

というプロパティが存在すると思います。

http://doc.4d.com/4Dv16R5/4D/16-R5/Form-properties.300-3509167.ja.html

ドキュメントの中で述べられているように,このプロパティがチェックされていないフォームは「オブジェクトのリサイズとウィンドウサイズの制約を処理するメカニズムは無効」になります。一見,おかしな設定のように思えますが,昔のMac OS/4Dでは,そういう振る舞いが標準的でした。

Info.plistのCFBundleNameのstringは,macOSプラットフォームにおけるアプリケーションの識別子です。Windowsプラットフォームでは,アプリケーションビルドキー(デザインモードのダイアログにはフィールドがないので,XMLを書き換える必要があります)のFileDescription(タスクマネージャーなどに表示される名称)やInternalNameなどを使用します。

http://doc.4d.com/4Dv16R6/4D/16-R6/Versioning-Common.201-3713833.ja.html

https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa381049(v=vs.85).aspx