Visual FoxProとVisual Modelerの連携 [ 設定編 ]
Visual FoxProとVisual Modelerを連携し、ラウンドトリップエンジニアリングを行えるようにする方法を解説します。
Microsoft Visual Studio 6に同梱されているVisual
Modelerは、そのままではVisual BasicとVisual C++としか連携できません。
しかし、Microsoftがwebで配布しているfoxvmwiz.exeを使用すれば、Visual
FoxProとVisual Modelerを連携しラウンドトリップエンジニアリングを行うことが可能になります。
Visual Modelerで作成したモデルは、コードジェネレーションウィザードにより
.VCXとしてジェネレートされます。
但し、
VB ・ VC++ と Visual Modeler を連携してた場合に比べ、Visual FoxProとの連携では機能が不足しているのは確かですが、VCXを開発のベースとしている場合は、Visual Modelerにより.VCXの構造をヴィジュアルに把握することが可能になります。
モデルプロパティで指定できる値は、Unspecified/Inherited、ChekBox、ComboBox、CommandButton、CommandGroup、Container、Control、EditBox、From、FormSet、Grid、Image、Label、Line、ListBox、OptionGroup、OLEBoundControl、OLEControl、PageFrame、Shape、Spinner、TextBox、Timer、TollBar の25種類です。
この連携の方法は、PRIMA TECHより出版されている「Visual FoxPro 6 Enterprise Development」によります。
注意事項:コードは読みやすくするため、日本語スペースをいれています。コピーアンドペーストは、しないで下さい。
1.foxvmwiz.exeの利用
foxvmwiz.exeはマイクロソフトのwebから入手できます。
又 PRIMA TECHの「Visual FoxPro 6 Enterprise Development」の付録CD-ROMに収録されています。
foxvmwiz.exeは、自己解凍形式のファイルで foxvmtmpディレクトリが作成され、その中に9個のファイルが解凍されます。README.TXT
CONNECTWIZ.HLP
CONNECTWIZ.CNT
VFPMODEL.APP
GETCLASS.FLL
DEMO.MDL
MSVM.PTY
VFP.PTY
ROSE.PTYVFPのディレクトリにVisualModelerサブディレクトリを作成し、これらのファイルをコピーします。
README.TXTに目を通したら、早速vfpmodel.appを実行してみましょう。
VFPのコマンドウィンドウに Do Visualmodeler\vfpmodel.app with 0 と入力します。
メニューバーの「Tools」に「Object Modeling」(Fig.1)が追加され、コードジェネレーションウィザードとリバースエンジニアリングウィザードの二つがサブメニューに追加されます。
Fig.1 VFPMODEL.APPによりObject Modelingメニューが「Tools」に追加される
2.VFPのIDEの拡張
Fig.1のサブメニューにVisual Modelerを加え、Visual FoxProからVisual Modelerを起動できるようにします。このためには、少量のコードを記述する必要があります。
VFPで新規プロジェクトを作成し、Loader.prg(List.1)を作成します。
*/ Loader.prg
*/ Program sets the initial menu
*/ options for Visual Modeler and adds a third
*/ choice to start the modeling tool itself from
*/ within Visual FoxPro
#DEFINE HKEY_LOCAL_MACHINE -2147483646
DO LoadModeler
Set Sysmenu Save
Procedure LoadModeler
Local oRegistry,AppPath,CommandLine
AppPath = Space(0)
CommandLine = Space(0)
Set Procedure to Registry
oRegistry = CreateObject("Registry")
If File(Home()+"visualmodeler\vfpmodel.app")
Do (Home()+"visualmodeler\vfpmodel.app") with 0
If oRegistry.Openkey('software\Microsoft\Visual Modeler',HKEY_LOCAL_MACHINE) = 0
oRegistry.GetKeyValue("InstallDir",@apppath)
If !Empty(apppath) And File(apppath+"\MSVM.EXE")
If PopUp("_ptl_omodeling")
Define Bar 3 Of _PTL_OMODELING Prompt "\<Visual Modeler"
CommandLine = "Run /N1 " + apppath + "\MSVM.EXE"
On Selection Bar 3 Of _ptl_omodeling &CommandLine
Endif
Endif
Endif
Endif
EndProcList.1 Loader.prg - VFPからVisual Modelerを起動するコード
次に、Registry.prgをプロジェクトに追加します。Registry.prgは、VFPのサンプルコードの中にあります。
VFPのサンプルファイルがインストールされていないなら、MSDNのCD-ROMからコピーしプロジェクトに追加します。
出来上がったプロジェクトの様子をFig.2に示します。
Fig.2 プロジェクトにregistry.prgを追加
ビルドメニューでApplication(.app)を指定してLoader.prgをビルドします。 コンパイルしてできたLoader.appをVFPのディレクトリーにコピーします。
コマンドウィンドウで Do Loader.app と入力するとVisual Modelerがサブメニューに追加されます(Fig.3)。
Fig.3 サブメニューにVisual Modelerが追加されます
VFPを起動後、毎回 Do Loader.app と入力するのが面倒であれば、VFPの「Tools」−「Options...」の「File Locations」タブをクリックして、Startup Program を vfp6strt.app から Loader.appに変更します。
(注:このままではVFPを起動したときに、「Welcome to Visual FoxPro」の画面が表示されません。この画面を表示する場合は、Loader.prgの DO LoadModeler の前に Do Loader.app を追加します。)
3.レジストリーの編集
Visual ModelerをVFPと連携させるためにレジストリーを編集します。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Visual Modeler\AddIns\VisualStudio の
PropertyFileの値をVFP.PTYに変更します。この値はデフォルトでは空です。
foxmvtmp.exeを解凍してできた、CONNECTWIZ.* と VFP.PTYをVisual Modelerのディレクトリーにコピーします。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Visual Modeler\AddIns に、Visual FoxProを追加します。そのキーをFig.4のように編集します。FundamentalTypes、InstallDirの値はVisual Basicの値をコピーします。
Fig.4 AddInsに追加したVisual FoxProエントリーとキー
4.Visual Modeler IDEの拡張
Visual Modelerから、VFPのコードジェネレーションウィザードとリバースエンジニアリングウィザードを起動できるように、メニューを拡張するVFP.MNU(List.2)をVisual Modelerのディレクトリーに作成します。(日本語・英語のメニューのどちらか一方を作成します)
日本語メニュー
英語メニュー
Menu ツール(&T)
{
Menu "Visual FoxPro(&F)"
{
Option "&モデリング ウィザード(&M)"
{
Exec vfpmodeler.exe
}
}
}Menu Tools
{
Menu "Visual &FoxPro"
{
Option "&Modeling Wizards"
{
Exec vfpmodeler.exe
}
}
}List.2 VFP.MNU Visual ModelerのメニューにVFPのモデリングウィザードを追加する
この、メニューから呼び出されるvfpmodeler.exeを作成します。 VFPで新規プロジェクトを作成しvfpmodeler.prg(List.3)を記述します。
*/ VPFMODELER.EXE
Local cCommand,nWindowHandle
*/ First, Check to see if this EXE is already running
Declare Integer FindWindow in Win32API ;
String lpClassName , String lpWindowName
Declare Integer SetForegroundWindow In Win32API ;
Integer hwnd
nWindowHandle = FindWindow(0, "Visual FoxPro Modeling Wizards")
If nWindowHandle > 0
SetForegroundWindow(nWindowHandle)
Else
With _Screen
.Caption = "Visual FoxPro Modeling Wizards"
.AutoCenter = .T.
.Visible = .T.
EndWith
cCommand = ;
"C:\Program Files\Microsoft Visual Studio\Vfp98\Visualmodeler\vfpmodel.APP"
Do (cCommand)
EndIfList.3 vfpmodeler.prg − VFPのモデリングウィザードを起動するプログラム
vfpmodeler.prgをビルドし、作成されたvfpmodeler.exeをVisual Modelerのディレクトリーにコピーします。
5.動作確認
PCをリブートし、VFPからVisual Modelerを起動したり、Visual ModelerからVFP用のウィザードを起動できるか、確認しましょう。
Fig.5 Visual ModelerのメニューにVFPのモデリングウィザードが追加されている
.
Fig.6 Visual ModelerのメニューにVFPのモデリングウィザードが追加されている
Fig.7 Visual Modelerから起動した、VFPのモデリングウィザード