ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com

ホーム

 
4D v18
SDI mode on Windows

SDI mode on Windows  


 

概要  

Windows において、4D デベロッパーは組みこみ4D アプリケーションをSDI (シングルドキュメントインターフェース)アプリケーションとして設定することができるようになりました。SDI アプリケーションでは、それぞれのウィンドウが互いに独立し、それぞれが独自のメニューバーを持つことができます。SDI アプリケーションはMDI (マルチドキュメントインターフェース)に対する概念で、MDI では全てのウィンドウが一つのメインウィンドウの中に含まれ、それに依存した作りになっています。

macOSにおける注意: SDI/MDI という概念はmacOSには存在しません。この機能はWindows 用アプリケーションに対してのみ関係し、関連するオプションはmacOS においては全て無視されます。

SDI モードは以下の実行環境に限り利用可能です:

  • Windows
  • 組み込みスタンドアロン4D アプリケーションまたはクライアント4D アプリケーション

アプリケーションにおいてSDI モードを有効化し使用するためには、以下の手順に従って下さい:

  1. データベース設定ダイアログボックスの"インターフェース"ページ内にあるWindows においてSDI モードを使用するオプションをチェックします(インターフェースページ)。
  2. 組み込みアプリケーションをビルドします(スタンドアロンまたはクライアントアプリケーション、アプリケーションの仕上げと展開を参照して下さい)。

その後、サポートされているコンテキスト(上記参照)において実行されると、組み込みアプリケーションは自動的にSDI モードで実行されます。

4D アプリケーションをSDI モードで実行するために、何か特別な実装などは必要ありません。既存のメニューバーは自動的にSDI ウィンドウ自身へと移されます。しかしながら、以下に挙げられている特定の原則に注意する必要があります。

SDI モードでは、プロセスライフ中に開かれた全てのドキュメントタイプウィンドウ(これには例えばフローティングパレットなども含まれます)には自動的にプロセスメニューバーが表示されます。プロセスメニューバーが非表示の状態でも、メニュー項目のショートカットは引き続きアクティブになっています。

メニューは、コンテンツのサイズを変更することなくウィンドウの上部に追加されます:

このため、ウィンドウはMDI モードあるいはSDI モードのどちらにおいてもオブジェクトの位置を再計算することなく使用することができます。

スプラッシュスクリーンについての注意:

  • データベースにおいてスプラッシュスクリーンインターフェースオプション(インターフェースページ を参照してください)が選択されていた場合、スプラッシュスクリーンは、MDI ウィンドウなら表示されていたはずのメニューも全て格納します。MDI モード同様、スプラッシュスクリーンを閉じるとアプリケーションを終了することになるという点に注意してください。
  • スプラッシュスクリーンオプションがデータベースにおいて選択されていなかった場合、メニューはプログラマーの選択によって開かれたウィンドウにおいてのみ表示されます。

MDI モードで実行時、ユーザーがアプリケーションウィンドウ(MDI ウィンドウ)を閉じると、4D アプリケーションは単に終了します。しかしながら、SDI モードで実行時には4D アプリケーションにはアプリケーションウィンドウはなく、また開いているウィンドウを全て閉じたとしても必ずしもユーザーがアプリケーションを終了したいと思っているとは限りません(例えばフェイスレスプロセスを実行したい場合もあるかもしれません)が、場合によっては終了したいという場合もあります。

こういった場合を管理するため、SDI モードで実行されている4D アプリケーションには、以下の条件が満たされた場合に自動的に終了する機構が含まれています(QUIT 4D コマンドを呼び出すのと同等の挙動をします):

  • ユーザーがこれ以上アプリケーションとやりとりすることができない
  • 生きているユーザープロセスがない
  • 4Dプロセスあるいはワーカープロセスが次のイベントを待っている
  • Webサーバーが開始されていない

注: 終了標準アクションが割り当てられているメニューが呼び出された場合、そのメニューがどこから呼ばれたものであろうと、アプリケーションは終了し、全てのウィンドウは閉じられます。

4D によって透過的に管理されるとはいえ、SDI モードではアプリケーションインターフェースの管理に関してこれまでと若干の差異が存在します。4D ランゲージにおける変更点は以下の表にある通りです。

コマンド/機能Windows でのSDI モードでの特徴
Open form windowSDI モードでのフローティングウィンドウのサポート(Controller form window)およびメニューバーの削除(Form has no menu bar)のオプション
Toolbar form window ウィンドウタイプはサポートされません
Menu bar heightメニューバーが2行以上に折り返されている場合でも単一行のメニューバーのピクセル単位での高さを返します。コマンドがフォームウィンドウをともなわないプロセスから呼ばれている場合には0を返します。
SHOW MENU BAR / HIDE MENU BAR(コードが実行されている場所から)カレントのフォームウィンドウにのみ適用されます
MAXIMIZE WINDOWウィンドウはスクリーンサイズいっぱいまで最大化されます。
CONVERT COORDINATESXY Screen はメインスクリーンが(0,0)に位置するグローバルな座標系です。座標系の左側、あるいは上側にあるスクリーンについては、負の値の座標を持つことができ、右側、あるいは下側にあるスクリーンについてはScreen heightScreen widthから返される値より大き値を持つことができます。
GET MOUSEグローバル座標はスクリーンからの相対位置になります。
GET WINDOW RECTwindow 引数に-1を渡した場合、コマンドは0;0;0;0を返します。
On Dropデータベースメソッドサポートされていません。



参照 

アプリケーションの仕上げと展開
インターフェースページ

 
プロパティ 

プロダクト: 4D
テーマ: メニューとメニューバー

 
ページの目次 
 
履歴 

初出: 4D v16 R4

 
ARTICLE USAGE

デザインリファレンス ( 4D v18)