1999年4月16日オブジェクト指向xBASE言語研究会勉強会資料


リサイズフォームサンプル


このサンプルを制作者に無断で転載/配布することを禁じます。
このサンプルを実行したために発生する如何なる損害に対しても制作者・配布 者はその責任を追いません。
このサンプルはMicrosoft Visual FoxPro/Ver6.0(ServicePack1) 用です。


はじめに

このサンプルを実行するには、vfpgrdex.lzh(xBaseフォーラムに登録) がダウンロードされており、
動作する環境が作られていることが必要です。
このプログラムをコンパイルするためにはvfpkhook.lzh(xBaseフォーラ ムに登録)内に同梱されているindex.htmも参照して下さい。
本説明はコンパイル方法等については詳述してありません。



● vfpgrdexプロジェクトを作成する

アプリケーションウイザードを起動し([Tools]-[Wizards]-[All]-[5.0互 換ウイザード] を起動します)FrameWorkOnlyをチェック後、プロ ジェクト名をvfpgrdexにします。ディレクトリーは出来ればc:にして下さい。

● resizefrm.zipを解凍する

mainmenu.mnt
mainmenu.mnx
mainmenu.mpr
mainmenu.mpx
rsizefrm.sct
rsizefrm.scx
resizeclasses.vct
resizeclasses.vcx
resizefrm.htm
上記ファイルが解凍されます。これを以下のディレクトリに設置します。

c:\vfpgrdex
   |
   +− Forms : rsizefrm.sct rsizefrm.scx
   |
   +− Class Libraries : resizeclasses.vct resizeclasses.vcx
   |
   +− Menus : mainmenu.mnt mainmenu.mnx mainmenu.mpr
   |
   +− Help : resizefrm.htm

● projectにメニューとフォームを登録します

プロジェクトウインドウを開けて
[Documents]-[Forms]をクリックした後に[Add]ボタンを押します。rsizefrmを 指定して登録します。
[Cls]をクリックした後に[Add]ボタンを押します。resizeclassesを指定して 登録します。
[Other]-[Menus]をクリックした後に[Add]ボタンを押しMainMenuを登録します 。


 アプリケーションのコンパイル

[Code]-[Programs]-[Vfpgrdex]をクリックした後に[Build]ボタンを押します 。
Build Optionダイアログが開きますので ( Action )-◎Build Applicationを チェックし[OK]ボタンを押します。
コンパイル完了後 [Code]-[Programs]-[Vfpgrdex]をクリックした後に[Ru n]ボタンを押し実行します。
※実行前に(View)-(Toolbar)-[Standard]のチェックをはずして下さい。

 コントロールもリサイズするフォームの作り方
グリッドを作成する方法は色々ありますがデータファイル情報をカーソルオブ ジェクトとしてフォームに設定した後にそこからグリッドを作成する方法を説明 します。

1.

フォームを新規に作ります。

2.

[Form Controls]をresizeclassesに切り替えます。
操作:[Form Controls]の[View Classes]アイコンをクリックします。
[Add...]を選択します。
   ダイアログボックスから、「vfpgrdexフォルダー」の「Libフォルダー 」から、resizeclassesを
   選択します。

3.

[Form Controls]のform_rzを選択し、[Form Designer]のフォーム上をクリッ クします。
("A form set object is required to add a form. Create one?"のメッセージ のダイアログボックスが表示されるので、[YES]ボタンを押します。
プロパティウィンドウを確認すれば、[Formset]-[Form]-[Form_rs]になってい ることが確認できます。

4.

作成された、Form_rsの位置を多少ずらします。
1.で作成したフォームがFrom_rsの下に表示されていますから、それをクリ ックします。
メニューバーの[Form]-[Remove Form]を選択して、1.で作成したフォームを 削除します。

5.

メニューバーの[Form]-[Remove Form Set]を選択し、フォームセットを削除し ます。
再度、プロパティウィンドウを確認すれば、[Form_rs]のみになっていること が確認できます。

6.

PCの解像度をForm_rsのdevhightとdevwidthに指定します。

7.

vfpgrdexの「グリッドの作り方」を参考にして、フォームを完成させます。

備考:vfpgrdexをリサイズ可能にする最低限のクラスしか作成していません。 他に必要なクラスは
   ご自身で作成してください。
   フォームが起動される時(Initイベント)、クローズされる時(Destroy イベント)にリサイズされた
 フォームの位置やサイズを復元したり保存する処理を加えると、更に使い勝 手が向上するは
   ずです。

   form_rsのカスタムプロパティとメソッド
    devhight -    開発マシンのディスプレイの解像度(高さ)
    devwidth -    開発マシンのディスプレイの解像度(幅)
        cotrolcounter -  フォーム上のコントロール(オブジェクト)の数
        originheight ---
        originwidth |
        origintop | フォームのオリジナルのサイズと位置
        originleft -----
        prevheight ----
        prevwidth ---+ リサイズ直前のフォームのサイズと位置
      setcontrols[ ] コントロールの参照用配列
        setcontrolsizes[ ] コントロールのサイズ情報の配列
       setresize コントロールの元のサイズの退避と、配列にコントロールの参照を設定
        resizecontrols フォームがリサイズされた時に、コントロールの大きさを再計算する
        resetsize 元のフォームサイズに戻す
        setresolution フォームサイズの変更