ウィンドウのサイズ
日付 | 2007/09/19 |
---|---|
ID | 07-019 |
バージョン | 2004 |
プラットフォーム | Mac / Win |
4D 2004にはウィンドウのサイズに関係したコマンドが追加されています。
- RESIZE FORM WINDOW
- SET FORM SIZE
利便性だけのためでコマンドが追加された訳ではありません。これらのコマンドは、プッシャーと呼ばれる概念の実装に基づいた必要性から追加されているのです。プッシャーについてはランゲージリファレンスとテクニカルノートで詳しく説明していますので、ここでの説明は省きます。
4D 2003以前では、SET WINDOW RECTを使ってウィンドウのサイズを変更していました。こうしたウィンドウのサイズ変更は、オブジェクトプロパティの設定によって位置や大きさに対して影響を与えました。しかし4D 2004のSET WINDOW RECTは、こうしたオブジェクトの位置や大きさに対して影響を与えなくなりました。ウィンドウのサイズに追従してオブジェクトの位置や大きさを変えたいときには、RESIZE FORM WINDOWを使わなければなりません。しかしSET WINDOW RECTの役目が終えた訳ではないのです。
これらのコマンドを使い分けてプログラムしなければなりませんが、どの状況でどのコマンドを使うべきか悩んだ時には、少々乱暴ではありますが次のように使い分けると良いでしょう。
- リサイズ :RESIZE FORM WINDOW
- 移動 :SET WINDOW RECT
- ウィンドウサイズ変更:SET FORM SIZE、SET WINDOW RECT
リサイズの時
マウス操作でリサイズしたように、フォーム上に配置したオブジェクトの位置や大きさが変化することを期待したいときには、RESIZE FORM WINDOWを使います。例えば、次のコードはフォームプロパティに設定された大きさに合わせてウィンドウのサイズを変更します。
`リサイズの例 `フォームのプロパティで指定したサイズにリサイズする C_LONGINT($width;$height;$left;$top;$right;$bottom) GET FORM PROPERTIES([Table1];"Iutput";$width;$height) GET WINDOW RECT($left;$top;$right;$bottom) RESIZE FORM WINDOW($width-$right+$left;$height-$bottom+$top)
移動
移動を行うためには、唯一位置を指定できるSET WINDOW RECTを使います。しかしウィンドウサイズが変化する事はあまり好ましいことではないので、次のようなコードでウィンドウサイズを変えずに位置だけを変更するようにします。
`移動の例 `指定した距離を移動する C_LONGINT($moveX;$moveY;$left;$top;$right;$bottom) $moveX:=80 `左に80ピクセル $moveY:=50 `下に40ピクセル GET WINDOW RECT($left;$top;$right;$bottom) SET WINDOW RECT($left+$moveX;$top+$moveY;$right+$moveX;$bottom+$moveY)
このコードを基にして、移動量を引数で渡せるように改造したコードをメソッド化しておくと便利かもしれません。
ウィンドウサイズ変更
トグルのようなものをつけて、トグルをクリックした時に新しい情報を見せたり、あるいは隠したりするようにウィンドウサイズを変更したい時には、SET FORM SIZEとSET WINDOW RECTを併せて使います。具体的な方法が、ランゲージリファレンスのSET FORM SIZEに書かれていますので、そちらをご参照ください。
オンラインマニュアル:SET FORM SIZE
関連情報
テクニカルノートに4D 6.8と動作比較したレポートがあります。これまで利用していたストラクチャのアップグレードを考えている方には、有用な情報です。
テクニカルノート:ウインドウリサイズコマンドとプッシャープロパティ