Position
nexacro studioでは、フォームや各コンポーネントの位置をleft、top、right、bottom、width、heightプロパティ値を使用して指定することができます。各プロパティ値は、ピクセル単位(px)またはパーセント(%)のいずれかを選択して使用することができます。デフォルトプロパティのほかPosition Base、Size Baseプロパティをサポートします。
デフォルトプロパティ
nexacroでの座標系は、以下の図のようにleft、right、width、top、bottom、height値から4つの値を選択して使用することができます。
プロパティウィンドウで、Position関連のプロパティの単位はピクセル(px)とパーセント(%)が存在します。各プロパティの単位は、二つに一つのみ選択することができます。プロパティ単位が変更されるとプロパティ値を単位に合わせて自動的に変換します。各プロパティ値は親コンポーネントを基準に設定され、PositionBaseを設定した場合には、該当するコンポーネントを基準に設定されます。
Form, Mainframe, Childframeはパーセント単位でサイズを指定できません。実際に使用する幅と高さをピクセル単位でのみ指定できます。
Formはleft、rightが無条件に0であるため、位置設定なしで width、height2つのプロパティ値のみを設定します。
コンポーネントのleft、right、widthプロパティの中から2つの項目、top、bottom、heightプロパティの中から2つの項目は常に設定される必要があります。
コンポーネントを選択してプロパティリストより既存に設定されたプロパティの中から1つ選択して設定値を削除すると(もしくはコンテキストメニューより[Remove Property Value]項目を選択)、その代わりに他のプロパティが自動変換された値に設定されます。
leftプロパティ値を削除すると、rightもしくはwidthプロパティ値が設定されます。
topプロパティ値を削除すると、bottomもしくはheightプロパティ値が設定されます。
widthプロパティ値を削除すると、leftもしくはrightプロパティ値が設定されます。
heightプロパティ値を削除すると、topもしくはbottomプロパティ値が設定されます。
rightプロパティ値を削除すると、leftもしくはwidthプロパティ値が設定されます。
bottomプロパティ値を削除すると、topもしくはheightプロパティ値が設定されます。
Sourceタブでleft、right、width、top、bottom、heightプロパティの組合せの中から1つを強制的に削除して保存した場合、Designタブでコンポーネントが表示されないことがあります。
トラッカー
コンポーネントを選択したとき、Positionプロパティによって該当するトラッカー(Tracker)は赤い色(もしくは青い色)で表示されます。
トラッカー適用イメージ | プロパティ値 |
---|---|
left, top, width, height | |
left, top, right, bottom | |
left, top, width, bottom | |
left, top, right, height |
コンポーネントのpositionstepプロパティ値が「-1」であるか、複数のコンポーネントを選択しない場合には、コンポーネントの中央にPositionBaseトラッカーが表示されます。
二つ以上のコンポーネントを選択した場合には、最終選択したコンポーネントのトラッカーのみが満たされた点で表示され、残りのコンポーネントは、中が空いている点で表示されます。複数のコンポーネントを選択した状態で、メニューの[Design]項目でAlign、Space、Size、Position、Arrange項目選択時、最終選択したコンポーネントを基準に関連するプロパティが変更されます。
min、max、fittocontentsプロパティ
コンポーネントの高さ、幅の最大値、最小値が指定できるminwidth、minheight、maxwidth、maxheightプロパティ値を指定することができます。該当プロパティ値を設定した場合にwidth、heightプロパティ値が指定された範囲外の場合には、width、heightプロパティ値を無視してmin、maxプロパティ値に指定した値が設定されます。
コンポーネントに含まれているコンテンツ(テキスト、画像など)に合わせてコンポーネントのサイズ(高さ、幅)を変換しようとする場合は、fittocontentsプロパティを使用します。例えば、ImageViewerコンポーネントのサイズをimageプロパティ値として指定した画像のサイズによりImageViwerコンポーネントのサイズを変更することができます。
プロパティ値が重複する場合、適用される順序は下記の通りです。
minwidth>minheight>maxwidth>maxheight>fittocontents
例えば、現在のサイズは300x300であるImageViewerコンポーネントのimageプロパティ値として400x400サイズの画像ファイルを指定して、maxheightプロパティ値が350である場合、ImageViewerコンポーネントの高さの値は、350になります。
minwidth、minheight、maxwidth、maxheight、fittocontentsプロパティは、アプリの実行時に反映されるプロパティです。nexacro studioのデザインモードで、プロパティ値に基づいてコンポーネントのサイズを変更するには、コンポーネントを選択して、メニューの[Design>Fit to Contents]もしくはツールバーやコンテキストメニューから[Fit to Contents]を選択します。
nexacro studioで[Fit to Contents]機能を実行せずに、アプリを実行する場合には、nexacro studioのデザインモードに表示されたコンポーネントのサイズと実行された画面に表示されるコンポーネントのサイズが異なる場合があります。
minwidth、minheight、maxwidth、maxheight、fittocontentsプロパティ値は、Formがロードされた時点もしくは該当のプロパティを設定した時点で適用されます。動的にコンテンツのサイズが変更された場合には自動的に反映されません。動的に変更したコンテンツに対して反映させるには、Form.resetScrollメソッドを実行する必要があります。
PositionBase
コンポーネントの位置を指定するときに、親コンポーネント(Form、Divなど)を基準にせず、同じ親を持つコンポーネントを基準に位置を指定することができます。親コンポーネントのみに基づいてコンポーネントを配置する場合には、すべてのコンポーネントの位置を、親コンポーネントとの間隔を計算して配置する必要がありましたが、コンポーネントを基準に配置する場合には、コンポーネントの配置間隔さえ決まれば簡単に配置することができます。
下図の場合、最初の行に配置されたButton01コンポーネントのleftプロパティ値は「183」です。Button00コンポーネントの幅と間隔を両方とも計算する必要があります。一方で、2番目の行に配置されたButton01コンポーネントのleftプロパティ値は、「Button00:28」のようにBaseとなるコンポーネントとBaseコンポーネントを基準とした間隔のみを指定します。
制約事項
他のコンポーネントを親として設定しているコンポーネントをBaseコンポーネントとして指定することはできません。
positionstepプロパティ値が異なるコンポーネントを、Baseコンポーネントとして指定することはできません。
positionstepプロパティ値が-1である場合(Fixed Component)は、他のコンポーネントをBaseコンポーネントに設定することができません。他のコンポーネントが該当のコンポーネントをBaseコンポーネントとして指定することはできません。
z-orderが自分より低いコンポーネントのみBaseコンポーネントとして指定することができます。z-orderが自分より高いコンポーネントを指定する場合には、下記のような警告メッセージが表示され、z-orderを変更するかどうかを確認します。
制約事項によりpositionstepプロパティ値が-1であるか、選択したコンポーネントと親が異なるか、positionstepプロパティ値が異なる場合には、プロパティウィンドウに表示されません。また、z-orderが自分より高いコンポーネントもプロパティウィンドウには表示されません。
PositionBaseトラッカー
PositionBaseトラッカーは、単一のコンポーネントを選択したとき、コンポーネント領域の中央に[+]の形で表示されます。マウスボタンで該当のトラッカーを押したままで、Baseコンポーネントに指定するコンポーネントにドラッグすると、正確な値を指定することができるウィンドウが表示され、Baseコンポーネントを指定することができます。
1
コンポーネントを選択し、PositionBaseトラッカーをマウスボタンでクリックします。
2
Baseコンポーネントに指定するコンポーネントにトラッカーをドラッグして移動します。Baseコンポーネントに指定できる場合には、対象コンポーネントの背景色が変更されます。
3
コンポーネントのプロパティの中からBaseコンポーネントと接続する対象を選択します。ドラッグした方向により関連するプロパティがデフォルトで表示されます。各プロパティ値の先頭のチェックボックスを選択すると、該当の値を編集することができます。
ドラッグの方向により、指定されるプロパティは下記の通りです。
top, left | top | top, right |
left | Component | right |
---|---|---|
bottom.left | bottom | bottom, right |
4
Baseコンポーネントの接続が完了すると、該当コンポーネントを選択したときの接続関係を線で表示します。
接続されたBaseコンポーネントを選択したときは点線で接続関係を表示します。
コンポーネントを選択しない場合には、接続関係を表示しません。
接続関係の削除
デザインウィンドウで接続関係を表示する線を選択し、[Delete]キーを入力するか、右クリックして、[Delete]を選択すると、接続関係がなくなります。コンポーネントを選択して、プロパティウィンドウで該当プロパティ値のBase項目を削除しても接続関係がなくなります。
コンポーネントのpositionstepプロパティ値が変更されたり、z-orderが変更される場合でも、接続関係が削除されます。接続関係が削除される対象を警告メッセージとして表示し、削除された結果はOutputウィンドウに表示されます。
Position Editor
コンポーネントを選択し、マウス右クリックした後、ミニツールバーの[Position Editor]アイコンを選択するか、メニューの[Design>Position Editor]を選択して実行することができます。
Position Editorでは、選択したコンポーネントの上位オブジェクトを基準にプロパティ値を変更することができます。
「Use anchor position」オプションを選択した場合には、必要な項目を固定させた状態で値を変更することができます。下の図のような場合、Left、Topプロパティ値が固定された状態であり、該当プロパティ値は、削除することができません。
ガイド
ガイド関連オプションは、メニューの[Tools > Options > Form Design > Guide]で変更することができます。
ルーラー
コンポーネントを選択したときに固定された辺に位置したトラッカー(Tracker)は赤色で表示されます。
Form領域でマウスカーソルを移動する場合、水平方向 / 垂直方向の位置がルーラーに表示されます。
Guide Line
Guide LineはRulerでサポートする機能で、開発者が任意で水平/垂直にLineを生成し、LineにComponentを揃えるなどの機能をサポートします。
Ruler上の生成したい地点をマウスのクリックでGuide Lineを生成することができ、生成されたGuide Lineは、マウスのドラッグで位置を変更することができます。Guide Lineは、Design Windowの領域外にDrag&Dropしたり、Guide Lineの逆三角形をダブルクリックして削除することができます。
Formにレイアウトが2つ以上ある場合、レイアウトに応じて他のガイドラインを設定することができます。nexacro studioを終了しても設定したガイドラインはそのまま維持されます。
ガイドラインに合わせてコンポーネントを配置した場合には、ガイドラインを移動すると、該当方向にコンポーネントのサイズが変更されます。
グリッド表示
コンポーネントの配置を容易に認識できるようにFormのデザイン画面の背景を格子の形で提供します。ルーラーの表示単位によって、格子間隔を異なって設定することができ、下記のように4つの形式で表示することができます。
Dot | |
Grid | |
DotGrid | |
Tile |
格子形式は、ルーラーの表示単位に関係なく、指定された形式に表示されます。
Snap
Formデザインでコンポーネントを移動したリサイズを変更するときに、微調整をサポートするために、他のコンポーネントやオプションで設定されたDot Gridに近づけると、自動的にその場所に配置させてくれるSnap機能をサポートします。
Altキーを押したまま、コンポーネントを移動する場合は、Snap機能が適用されません。