# フレーム

マニュアル > 画面作成ガイド > ダイアログとフレーム > # フレーム |

フレームとは

FA-Panelの画面表示方法の一つとして、画面をいくつかの「フレーム」に分割して、作成した複数のフォームをぞれぞれのフレームに表示して全体で１つの画面として表示する機能が用意されています。フレーム分割を行うにはルートプロパティのDefaultFrameでフレームの定義を行います。各フレーム上で表示するフォームはランタイム中に切り替えることも可能です。

| メイン画面をフレーム分割して 表示することができる

フレームのサンプルは、以下から利用することができます。

フレーム分割の定義

ルートプロパティのDefaultFrameで行うフレームの定義は、Webページを作成する際のhtmlのフレーム定義と似ています。

下記は2列にフレーム分割した例です。FRAMESETの階層で、まずフレームを何分割にするのかを定義し、FRAMEの階層で、各フレームの定義を行います。

<FRAMESET Cols="50%,*" Main="Frame1"> <FRAME Name="Frame1" BaseFormName="Form01" FormName="FrameForm1"></FRAME> <FRAME Name="Frame2" BaseFormName="Form02" FormName="FrameForm2"></FRAME> </FRAMESET>

| メイン画面を２列にフレーム分割して表示します。

FRAMESETのColsでは"50%,*"と指定していますが、これは2列で表示し、左の列は50%の幅で、右の列は残りの幅（つまり50%）で表示するという意味です。例えば、Cols="30%,30%,20%,*"とすると、4列表示されます。

Colsは列のフレーム分割を設定しますが、同様にRowsで行のフレーム分割を設定できます。例えば、Rows="50%,*"とすると、2行にフレームが分割されます。

| メイン画面を２行にフレーム分割して表示します。

ColsとRowsは同時に指定することもできます。例えばCols="30%,30%,*" Rows="50%,*"とすると３列２行で分割されます。

| メイン画面を３列２行にフレーム分割して表示します。

また、FRAMESETの中にさらにFRAMESETを含める（入れ子にする）ことができます。FRAMESETは何階層でも設定できます。

例）２行定義したフレームで、下列のフレームにさらに２列のフレームセットを定義する

<FRAMESET Rows="100,*" Main="Frame3"> <FRAME Name="Frame1" BaseFormName="Form01" FormName="FrameForm1"></FRAME> <FRAMESET Cols="200,*"> <FRAME Name="Frame2" BaseFormName="Form02" FormName="FrameForm2"></FRAME> <FRAME Name="Frame3" BaseFormName="Form03" FormName="FrameForm3"></FRAME> </FRAMESET> </FRAMESET>

| メイン画面を上下２行に分割し、さらに下行を２列にフレーム分割して表示します。

| フレーム分割表示をする場合、Panel Browserがもともと持っている外枠のくぼみと、フレームの枠のくぼみが重なり、不自然に見える場合があります。ルートプロパティのShowBrowserBorderをFALSEにすると、Panel Browserの外枠が表示されず、きれいに表示できます。

Mainとは

FRAMESETの「Main」パラメータで指定したフレームはメイン画面として扱われ、OpenFormメソッドを呼び出した際にフォームが表示される主たるフレームとなります。下記の例では、"Frame1"がメイン画面となり、「::OpenForm("Form03")」とした場合、Frame1（左側のフレーム）にForm03が表示されます。もし、メイン画面以外のフレームのフォームをランタイム中に切り替えたい場合はOpenViewFormメソッドを使用します。

<FRAMESET Cols="50%,*" Main="Frame1"> <FRAME Name="Frame1" BaseFormName="Form01" FormName="FrameForm1"></FRAME> <FRAME Name="Frame2" BaseFormName="Form02" FormName="FrameForm2"></FRAME> </FRAMESET>

フレームでのフォーム名について

FRAMEの、Name / BaseFormName / FormNameパラメータはダイアログ表示で使用するOpenDialogメソッドの最初の３つの引数と似ています。

Nameはフレームに付けるビュー名となります。ビュー名は、OpenViewForm/SetZoomメソッド等で各フレームで表示されているフォームを切り替えたいときに指定する名前です。また、BaseFormNameは、フレームに表示する元フォームの名前です。元フォーム名とはPanel Editorで作成したフォーム本体です。そして、FormNameには、フレームに実際にフォームが表示された時のフォームオブジェクトの名前を指定します。

例）ビュー名が"Frame1"のフレームで、Form03をFrameForm03という名前で開く

::OpenViewForm ("Frame1", "Form03", "FrameForm03");

スクリプトからフォームを参照する際にはFormNameで指定した名前を使用します。

例）FormNameに"FrameForm1"を指定した場合のスクリプトからの参照

::FrameForm1.FillColor = "#FF0000";

このフォーム名（FormName）はダイアログ、ビューコントロールを含め、現在開かれている全てのフォームで重複した名前を指定することはできません。

また、１つの元フォームに対して異なるフォーム名（FormName）を指定すれば、下記のように１つの元フォーム（BaseFormName）の画面を複数のフレーム上に同時に開くことができます。

例）同じ元フォームで9つのフレームで同時に表示する

FRAMESETパラメータ

FRAMESETのパラメータ一は以下のとおりです。

パラメータ | 解説
Cols Rows （必須） | 列（Cols）及び行（Rows）の定義。各列や行のサイズをカンマ区切りで指定します。サイズの指定は下記の３通りで定義できます。 1) 数値 数値で指定した場合、ピクセル単位で固定幅になります。Panel Browserのサイズを大きくしたり、小さくしたりしても、サイズは変わりません。 2)数値% 数値%で指定した場合、現在のPanel Browserのサイズを基準とした割合でサイズが決定されます。例えば50%と指定すると、Panel Browserのサイズを大きくするにつれ、50%のサイズでフレームサイズも大きくなります。 3) * アスタリスクを指定した場合、サイズは自動調整されます。 例）Cols = "50, *, 50" ３列を定義し、左右の列は50ピクセル固定で、中央の列はPanel Browserの幅から左右の列サイズの合計（100ピクセル）を引いたサイズになります。 例）Cols = "33%, 33%, *" Rows = "25%,25%,25%,*" １２個（３列ｘ４行）のフレームを定義します。
Main （必須） | フレームセット内では複数のフレームが定義されますが、その中でメイン画面となるフレームを指定します。OpenFormメソッドで開かれるフォームは、メイン画面で開かれます。 ※複数階層（入れ子）にした場合、一番トップのFRAMESETのMainの設定のみ有効になります。
ColMovableSeparators RowMovableSeparators | 各フレームのセパレータをマウスで移動できるようにするかどうかを設定します。
ColMins RowMins | フレームを移動可能にする場合は、「Y」、移動不可にする場合は「N」を指定します。セパレータはフレーム数 - 1だけ存在し、YもしくはNをセパレータの数だけ、カンマ区切りで指定します。 例）Cols = "50, *, *, 50" ColMovableSeparators="N,Y,N" ２列目と３列目のフレーム間のセパレータのみ移動可能とする。 何も指定しないと、全てのセパレータをマウスで移動できます（FrameSpacingに0を指定すると、「Y」を指定してもセパレータを移動できません）。
ColMins RowMins | 各列及び行の最小サイズ。Cols/Rowsでサイズをピクセル以外の指定方法で指定した場合、Panel Browserのサイズにより各サイズは自動調整されますが、そのとき最小のサイズを指定します。-1を指定すると、特に指定しないという意味になります。 例）Cols = "50, *, *, 50" ColMins = "-1, 30, 30, -1" ２列目と３列目の最小サイズを30ピクセルに設定する
FrameSpacing | フレーム間のスペース（セパレータのサイズ）。ピクセル単位で指定します。何も指定しないと、4が指定されます。0を指定すると、セパレータのサイズが0になり、セパレータのマウス移動ができなくなります。 例） FrameSpacing="10"
FrameSpacingColor | フレーム間のスペース間の色（セパレータの色）。色文字で指定します。なにも指定しないと、Windows標準のフォーム色が使用されます。 例） FrameSpacingColor="#FF0000"
BorderStyle | フレームセットの枠のスタイル。 "NONE" - 枠なし（フォームとセパレータの色が同じ場合、セパレータを 見えないようにすることができます。） " FLAT " - 黒線の枠（立体表示無し） " 3D_SUNK1" - ３Ｄでのくぼみがある枠で表示（セパレータが浮き上がって見える。） "3D_ SUNK2" - 3D_SUNK1より深いくぼみで表示。

FRAMEパラメータ

FRAMEのパラメータ一は以下のとおりです。

パラメータ | 解説
Name （必須） | ビュー名（OpenViewForm/SetZoomなどで使用されます）。
BaseFormName （必須） | フレームに表示したい元フォームのフォーム名を指定します。
FormName （必須） | フォーム名（任意の名前）。スクリプトからオブジェクトとして参照するためのフォーム名を指定します。ダイアログ、ビューコントロールで埋め込まれているフォーム、他のフレームのフォーム名で重複してはいけません。
Stretch | フレームの大きさに合わせてフォームの大きさを広げる。何も指定しないと"DEFAULT"が設定されます。 "NONE" - ストレッチしない "STRETCH_FULL" - フレームの大きさに合わせて引き伸ばし表示する "STRETCH_KEEPRATE" - フレームの大きさに合わせて引き伸ばし表示する（縦横比保持） "DEFAULT" - デフォルト値（ルートプロパティStretch）と同じ
AlignmentX AlignmentY | Stretchで"NONE"を指定した場合、フォームは固定サイズで表示されます。その際、フレームサイズがフォームサイズより大きくなった場合、フォームをどの位置に表示するかを指定します。何も指定しないと中央に表示されます。 AlignmentXの場合 "LEFT" - 左詰に表示 "Center" - 左右方向の中央に表示 "RIGHT" - 右詰に表示 AlignmentYの場合 "TOP" - 左詰に表示 "Center" - 上下方向の中央に表示 "BOTTOM" - 右詰に表示 例）AlignmentX="LEFT" AlignmentY="TOP" 左上につめて表示します。 フォームの領域外の色はフォームプロパティViewFillColorで指定できます。フォームの色と同じ色に指定することにより、フレームサイズがフォームサイズより大きくなった場合でも、フォームが広がったように見えます。
ScrollBarX ScrollBarY | Stretchで"NONE"を指定した場合、フォームは固定サイズで表示されます。その際、フレームサイズがフォームサイズより小さくなった場合、スクロールバーを表示するかどうかを指定します。何も指定しない場合、スクロールバーは自動表示されます。 "AUTO" - 必要なとき、自動的にスクロールバーを表示します。 "Y" - フレームサイズに関わらず、必ずスクロールバーを表示します。 "N" - フレームサイズに関わらず、スクロールバーを表示しません。
BorderStyle | フレームの枠のスタイル。 "NONE" - 枠なし（フォームとセパレータの色が同じ場合、セパレータを見えないようにすることができます。） " FLAT " - 黒線の枠（立体表示無し） " 3D_SUNK1" - ３Ｄでのくぼみがある枠で表示（セパレータが浮き上がって見える。） "3D_ SUNK2" - 3D_SUNK1より深いくぼみで表示。