Phase.3 セットアップエージェントを作る(『スタパライフ』 Ver 1.01)

 Chapter.12 開始時の処理

 フォーム付きのDelphi Scriptの場合、最初に実行される処理はFormCreateプロシジャになっています。『スタパライフ』のセットアップ兼プロパティエージェントの開始時には、以下のような処理が必要になります。

  1. キャビネットアイテムの有無の確認
  2. キャビネットアイテムが存在する場合、レジストリィから設定情報の読み込み
  3. キャビネットアイテムが存在しない場合、初期値設定
 上記のような処理を実行することで、セットアップと設定変更の処理を兼用するようにしています(もちろん、セットアップとプロパティのエージェントをそれぞれ作ってもかまいませんし、また必ず必要というわけでもありません)。これから、順を追ってDelphi Scriptの内容を確認していきましょう。
 Ver 1.01の『スタパライフ』エージェントののセットアップエージェントのソースはこちらを参照してください。これ以降のセンテンスでは、大事な部分をピックアップして解説します。


・キャビネットアイテムの有無の確認


 105:  if Assigned(CabinetManager.Find('diary$stpl')) then
 CabinetManager.Findは、キャビネット上に登録されているアイテムを検索するメソッドです。『スタパライフ』エージェントは、登録されていればキャビネット上に『diary$stpl』という名前で存在するはずなので、その場合は上記の式全体の評価は『True』に、無ければ『False』になります。


・キャビネットアイテムが存在する場合、レジストリィから設定情報の読み込み
 キャビネットにアイテムが登録されている場合は、レジストリィから設定値を読み出します。また画面上の『キャビネットに登録する』ボタンを無効にしています。

 106:  begin
 107:    cmdOk.enabled:=False;
 108:    userfile := DataDir + '\stpl\user.dat';
 109:    if FileExists(userfile) then
 110:    begin
 111:      Leg:=TLegistry.Create(userfile,lmOpenRead,1024,1024,nil);
 112:      txtURL.Text:=Leg.ReadStringDef('/common/url','');
 113:      lblLocalLogFileName.Caption:=DataDir +'\'+Leg.ReadStringDef('/common/mbox','');
 114:      chkAutoBrowserOpen.Checked:=Leg.ReadBoolDef('/common/autobrowseropen',0);
 115:      Leg.Free;
 116:    end else
 117:    begin
 118:      txtURL.Text:='http://www.alt-r.com/di/toc5-0.html';
 119:      lblLocalLogFileName.Caption:=DataDir +'\'+ 'stpl\stpl.mbx';
 120:    end;

 TLegistryオブジェクトによって、レジストリィを参照することができます。上記の命令は、Legというオブジェクト変数を介して、userfileに格納されているパスのレジストリィファイル(データディレクトリィ配下の『stpl\user.dat』)を読み込みモードで参照可能にしています。ReadStringDefReadBoolDefReadIntegerDefといったメソッドによって、指定されたレジストリィキーの値を取り出すことができ、Freeメソッドでファイルの参照をクローズします。
 ここでは、巡回先URLである文字列『txtURL』、ローカルログの位置を表す文字列『lblLocalLogFileName』、ブラウザの自動起動を行うかどうかの論理値『chkAutoBrowserOpen』にそれぞれ設定値を読み込んでいます。
 また、キャビネットにアイテムが存在するにも関らずレジストリィが開けなかった場合は、『txtURL』『lblLocalLogFileName』にキャビネットアイテムが存在しない場合と同じ初期値を設定します。


・キャビネットアイテムが存在しない場合、初期値設定
 キャビネットにアイテムが登録されていない場合は、登録時の初期値を設定します。また画面上の『設定を保存する』ボタンを無効にしています。

 121:  end else
 122:  begin
 123:    cmdSave.enabled:=False;
 124:    txtURL.Text:='http://www.alt-r.com/di/toc5-0.html';
 125:    lblLocalLogFileName.Caption:=DataDir +'\'+ 'stpl\stpl.mbx';
 126:  end;

 これで、開始時の処理の記述は終りました。キャビネットアイテムが存在しない場合は、設定項目は初期値が設定され『キャビネットへ登録』するボタンが有効になり、存在する場合はレジストリィに保存されている値を読み込んで『設定を保存する』ボタンが有効になっています。