オブジェクト

Q1
ウィンドウのサイズに合わせてオブジェクトをリサイズしたい
[内容]
ウィンドウサイズを変更した時、それにあわせてオブジェクトのサイズが調整される
ようにしたい

A1
[解決方法]
リサイズのタイミングによって2つの方法があります。

@ ウィンドウサイズが手動で変更された際にオブジェクトをリサイズする
  参照演算子を利用して、Formサイズが変更された際にオブジェクトをリサイズします。
サンプルプログラムでは、SpreadのサイズをFormのサイズから算出し、リサイズています。
また、SpreadRowの高さ、SpreadColumnの幅はSpreadのサイズから算出し、リサイズしています。

[サンプル:form_size1]

Form form_size1 {
   …
    Spread Spread1 {
    X = 43;
    Y = 75;
    
    /*常にFormの大きさを参照する*/
    Width &= Form_size1.Width - 70;
    Height &= Form_size1.Height - 90;
    
    SpreadRow SpreadRow1[] {
      /*SpreadのHeightから、SpreadRowのHeightを算出*/
      Height &= (^.Height -20) / 5;
      SpreadColumn SpreadColumn1 {
        Title = "品名";
        /*SpreadのWidthから、SpreadColumnのWidthを算出*/
        Width &= (^.^.Width - 30) / 3;
      }
      SpreadColumn SpreadColumn2 {
        Title = "値段";
        Width &= (^.^.Width - 30) / 3;
      }
      SpreadColumn SpreadColumn3 {
        Title = "出荷先";
        Width &= (^.^.Width - 35) / 3;
      }
    }
  }
   …
}

A ウィンドウを最大化表示した際にオブジェクトをリサイズする
  ウィンドウを最大化・縮小表示するとWindowStateChangedイベントが発生します。
このイベントを利用してオブジェクトをリサイズします。
サンプルファイルではWindowStateChangedイベントの引数を参照し、
最大化画面と縮小表示画面でSpreadのサイズを変更しています。

※ただし、WindowStateChangedイベントはv4.1.3以降で実装されたイベント
 ですので、それ以前のバージョンでは@の方法をご利用ください。

[サンプル:form_size2]

Form Form_size2 {
   …
  Spread Spread1 {
    X = 43;
    Y = 75;
    Width = 332;
    Height = 122;
    
    SpreadRow SpreadRow1[] {
      Height = 20;
      SpreadColumn SpreadColumn1 {
        Title = "品名";
      }
      SpreadColumn SpreadColumn2 {
        Title = "値段";
      }
      SpreadColumn SpreadColumn3 {
        Title = "出荷先";
      }
    }
  }
}
Function OnWindowStateChanged ( e ){
  /*起きたのが最大化だった場合*/
  if(e.state == 2){
    form_size2.Spread1.Width = 996;
    form_size2.Spread1.Height = 366;
    form_size2.Spread1.SpreadRow1.Height = 69;
    form_size2.Spread1.SpreadRow1.SpreadColumn1.Width = 320;
    form_size2.Spread1.SpreadRow1.SpreadColumn2.Width = 320;
    form_size2.Spread1.SpreadRow1.SpreadColumn3.Width = 320;
  }else{
    form_size2.Spread1.Width = 332;
    form_size2.Spread1.Height = 122;
    form_size2.Spread1.SpreadRow1.Height = 20;
    form_size2.Spread1.SpreadRow1.SpreadColumn1.Width = 100;
    form_size2.Spread1.SpreadRow1.SpreadColumn2.Width = 100;
    form_size2.Spread1.SpreadRow1.SpreadColumn3.Width = 100;
  }
}

CRSファイル形式のサンプル
  「オブジェクトをリサイズする (Obj_004.zip)
  (@…form_size1.crs、A…form_size2.crs)
で実際の動作をご確認いただけます。

なお、Biz/BrowserVからはスケーリング機能が実装されますので、煩雑な設定なしに
オブジェクトのリサイズが可能です。

管理番号:Obj_004
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser・Biz/Designer TIPS集 トップへ