Object Oriented XBASE Forum

ただいま製作中です完成までもうしばらくお待ちください


VFPToolkit.dialogs CLASS

VFPToolkit.dialogsクラスを理解するためにサンプルをC#.NETで作成する方法を解説します。特にこの章では、VFPToolkit をC#.NETプロジェクトに設定する方法も詳しく解説します。
Visual FoxPro互換のMessageBoxをまずVisual C#.NETで表示する方法を学び、さらに GetColorDialog、 GetFontDialog、GetPictDialog、GetDirDialog、GetFileDialog、PutFileDialog、GetPrinterを試しに実行する方法を解説いたします。


Visual FoxProのMESSAGEBOX

MESSAGEBOX(eMessageText [, cTitleBarText][, nDialogBoxType ][, nTimeout])
( ※ [ ]は省略可能をあらわします )

eMessageText : ダイアログに表示するテキスト内容
cTitleBarText : ダイアログのタイトルに表示するテキスト
nDialogBoxType : 数値の組み合わせでダイアログのアイコンやボタン数、初期ボタン押下位置の設定
nTimeout : ダイアログのボタン押下を待つ時間が設定出来ますが .NETバージョンにはこのパラメータは組み込まれていません

ダイアログに設置されるボタンの種類
0 OK button only
1 OK and キャンセル buttons
2 中止 再試行, and 無視 buttons
3 はい, いいえ, and キャンセル buttons
4 はい and いいえ buttons
5 再試行 and キャンセル buttons
表示するアイコンの種類
16 Stop sign
32 Question mark
48 Exclamation point
64 Information (i) icon
初期にフォーカスの当るボタン位置
0 First button
256 Second button
512 Third button

nDialogBoxType の指定はこの表にある数値(10進です)を足し算したものを設定します。
例えば MESSAGEBOX("3+32+256の表示はこうなります",3+32+256,"テスト")というパラメータで FoxProで表示させてみます。


左図のように はい/いいえ/キャンセル3
クエスチョンマーク32
初期にフォーカスを当てるボタン2番目のボタンで256
と表示されるようになります。

MessageBoxのどのボタンを押したのか?、それは戻り数値で分かるようになっています。

戻り値 押したボタン
1 OK
2 キャンセル
3 中止
4 再試行
5 無視
6 はい
7 いいえ

Visual C#.NETでMessageBoxを実行する

※ この操作には、米国Microsoftから無償でダウンロードできるVFPToolkitNETライブラリをVisual Studio .NET 2003にインストールしておく必要があります。VFPToolkitNET.DLLをインストールする方法は、こちらをご覧ください。

  1. Visual Studio .NETを立ち上げます。メニューの[ファイル]-[新規作成]-[プロジェクト]を選択。
  2. 新しいプロジェクトダイアログボックスで C#とWindowsアプリケーションをクリックします。
  3. プロジェクト名は仮に VFPToolkitTEST とします。

  4. VFPToolkitTESTを立ち上げ、ソリューションエクスプローラの[参照設定]をマウス右クリックします。そしてフロートメニューの[参照の追加]を指定します。


  5. 参照の追加ダイアログで[ .NET]タブのコンポート名リストからVisual FoxPro Toolkit for .NET 1.0.0.0 をダブルクリックします。
    選択されたコンポーネントリストボックスに転送されたことを確認し、OKボタンでダイアログを閉じます。


  6. ソリューションエクスプローラでクラスライブラリーが使えるようになったか、確認します。


  7. Form1.cs[デザイン]を選択し、ツールボックスからButtonオブジェクトを1つFormへ設置します。


  8. Form1の[ button1 ]オブジェクトをダブルクリックします。
    ソースリストが表示されます。まずリストの先頭へスクロールしてクラスの使用を宣言します。

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using VfpDialogs = VFPToolkit.dialogs; ←追加します

  9. 次に private void button1_Click のメソッドコード部分に戻ります。コードを下記のように記述します。

    VFPToolkit.dialogs.MessageBox
    private void button1_Click(object sender, System.EventArgs e)
    {
            int nms;
            nms = VfpDialogs.MessageBox("3 + 32 のパラメータです",3 + 32 ,"テストMessageBox");
    }							

    ※茶殻での確認方法: ? MessageBox("3 + 32 のパラメータです",3 + 32 + 256 ,"テストMessageBox")
    ※ この解説を書いているときにダイアログ形式を決定するパラメータのうちデフォルトプッシュボタンを設定する値をセットできないことが分かりました。int32ではあるのですが 3 + 32 + 256 は、動作しません。

  10. プログラムの記入を完了しましたら、[ビルド]-[ソリューションのビルド]を行い。エラーが出ないことを確認した後、[デバッグ]-[開始]を選択して、テストランを行います。
    Form1ダイアログのbutton1を押してみます。MessageBoxがうまく表示されましたでしょうか。


  11. MessageBoxの戻り値は、このサンプルでは nms に戻ります。ここでは値の検証はいたしません。
    さて、せっかくですからこのソースを流用してもうすこし他のMethodを試してみます。ColorDialogコンポーネントを利用したGetColor() Methodを試します。9.でbutton1_Clickに書いたソースに下記のプログラムを加えます。
    VFPToolkit.dialogs.GetColor
    private void button1_Click(object sender, System.EventArgs e)
    {
            int nms;
            nms = VfpDialogs.MessageBox("3 + 32 のパラメータです",3 + 32 ,"テストMessageBox");
            this.button1.ForeColor = VfpDialogs.GetColor();
    }							

    ※茶殻での確認方法: ? GetColor()

  12. ColorDialogが表示されボタンの表示文字色が指定の色に変更されましたか?。さらにGetFont() Methodを試します。
    11.で書いたものにさらに下記のものを加えてみます。

    VFPToolkit.dialogs.GetFont
    private void button1_Click(object sender, System.EventArgs e)
    {
            int nms;
            nms = VfpDialogs.MessageBox("3 + 32 のパラメータです",3 + 32 ,"テストMessageBox");
            this.button1.ForeColor = VfpDialogs.GetColor();
    
            this.button1.Font = VfpDialogs.GetFont();
            this.button1.Font = VfpDialogs.GetFont( this.button1.Font );
            this.button1.Font = VfpDialogs.GetFont( "MS UI Gothic", 12 );
    
    }							

    GetFont()のパラメータは ( Fontオブジェクト ) か ("Font名称", nフォントサイズ )の指定が可能になっています。
    ※茶殻での確認方法: ? GetFont()

  13. GetPict() Methodを試してみます。GetPictは、画像ファイルを選択してそのファイル名を戻すDialogです。
    このコードを書くためにIDEのFormデザインを選択し、button1をFormの右下のはじにずらします。
    そしてツールボックスからPictureBoxオブジェクトを選択してFormに大きめに設置します。



  14. button1をダブルクリックしてコードを表示します。button1_Clickに下記のように記述します。

    VFPToolkit.dialogs.GetPict
    private void button1_Click(object sender, System.EventArgs e)
    {
    
            this.pictureBox1.Image = Image.FromFile(VfpDialogs.GetPict());
    
    }							

    画像ファイルが表示されましたか?
    ※茶殻での確認方法: ?
    GetPict()

  15. GetDir() Method を試してみます。GetDirはフォルダーのフルパスディレクトリ名称を取得するダイアログを表示して、ユーザの選択結果を文字列で戻します。キャンセルの場合はNULLストリングが戻ります。

    VFPToolkit.dialogs.GetDir
    private void button1_Click(object sender, System.EventArgs e)
    {
    
            VfpDialogs.MessageBox(VfpDialogs.GetDir("ダイアログに表示する文字列 省略可"));
          // VfpDialogs.GetDir(); ダイアログ表示文字列を省略の場合 [""]の必要は無い。
    }							

    指定したファイルパスが表示されたと思います。
    ※茶殻での確認方法: ?
    GetDir() // このダイアログは茶殻では、DBCSが文字化けします。FoxPro Ver8.0から正常に表示されます。茶殻はFoxPro Ver6.0で作成されています。悪しからず。(^_^;)

  16. ファイルオープンダイアログについて.GetFile() と PutFile() の2種類のMethodを記述してみます。

    VFPToolkit.dialogs.GetFile and VFPToolkit.dialogs.PutFile
    private void button1_Click(object sender, System.EventArgs e)
    {
    
            VfpDialogs.MessageBox(VfpDialogs.GetFile("ファイルタイプ1(*.cs*)|*.cs*|ファイルタイプ2(*.s*)|*.s*","ダイアログのタイトル"));
            VfpDialogs.MessageBox(VfpDialogs.PutFile("ダイアログのタイトル", "MyCustomFile", "prc;prg;xml"));
    }							

    GetFileオープンするファイルの絞込み用として、パラメータの1に ファイルその1の説明文|1の拡張子|ファイルその2の説明文|2の拡張子|〜 と書きます。
    PutFileは登録ファイルの名称がパラメータの2、拡張子(1つで良い並べる場合は;で区切る)が第3パラメータとなる。
    ※茶殻での確認方法:
    ? GETFILE() ? PUTFILE() 詳細に設定する場合は下記を参照。
    GETFILE([cFileExtensions] [, cText] [, cOpenButtonCaption] [, nButtonType] [, cTitleBarCaption])
    PUTFILE([cCustomText] [, cFileName] [, cFileExtensions])

  17. dialogsクラス演習の最後にプリンターオープンダイアログ GetPrinter() Methodを記述します。

    VFPToolkit.dialogs.GetPrinter
    private void button1_Click(object sender, System.EventArgs e)
    {
            VfpDialogs.MessageBox(VfpDialogs.GetPrinter());
    }							

    ※茶殻での確認方法: ? GETPRINTER()