Phase.5 過去ログも巡回する(『スタパライフ』 Ver 1.11)

 Chapter.22 ブラウザエージェントの指定方法を変更する

 過去ログを巡回するのとは直接関係無いのですが、ブラウザエージェントの指定方法を変更しておくことにしました。なぜかというと、今後stplBrowesrのようなカスタムブラウザを作った場合に、簡単にテストができるように、ブラウザエージェントのファイル名を直接入力できたほうが便利かな……と思ったのです。ま、これが役に立つかどうかはこれからの展開次第ですが……。そうそう、ブラウザを変更した時に、キャビネットアイテムのプロパティが変更されない問題も修正しておく必要がありますね。
 ブラウザエージェントを指定するコントロールは、は直接入力と選択入力とどちらも可能にするために、コンボボックスを使うことにしましょう。

設定項目 使用するオブジェクト 名前
使用するブラウザの選択 コンボボックス cmbBrowser

 フォームはこのようになります。Ver 1.10の『スパタライフ』のセットアップエージェントの全ソースは、こちらをご覧下さい。



・レジストリィから設定情報の読み込み

125:      cmbBrowser.Text:=Leg.ReadStringDef('/common/Browser','stpl\stplBrowser.pas');

 レジストリィから設定項目を読み取るところを変更しています。『カスタムブラウザを使用するかどうか』という論理値ではなく、ブラウザエージェントのファイル名そのものをレジストリィに登録するよう変更します。


・初期値の設定

 129:    begin
 130:      txtURL.Text:='http://www.alt-r.com/di/toc5-0.html';
 131:      lblLocalLogFileName.Caption:=DataDir +'\'+ 'stpl\stpl.mbx';
 132:      cmbBrowser.Text:='stpl\stplBrowser.pas';
 133:    end;
 134:  end else
 135:  begin
 136:    txtURL.Text:='http://www.alt-r.com/di/toc5-0.html';
 137:    lblLocalLogFileName.Caption:=DataDir +'\'+ 'stpl\stpl.mbx';
 138:    cmbBrowser.Text:='stpl\stplBrowser.pas';
 139:  end;

 レジストリィから設定を読み込まない場合の処理も追加が発生します。『カスタムブラウザを使用するかどうか』というチェックボックスの場合、放っておけばチェックが無いだけです。しかし今回は、コンボボックスのテキストには、標準のエージェントが書き込まれていなければいけません。132,138行目を見れば分かるように、標準エージェントに『stplBrowser.pas』を設定しています。


・レジストリィへの設定情報の書き込み

  68:  Leg.WriteString('/common/Browser',cmbBrowser.text);

 レジストリィへ使用するブラウザの設定を保存するところで、コンボボックスのテキストを書き込むように変更しています。


・キャビネットへ追加する場合のブラウザエージェントの設定

  87:    Item.PluginExecFileName:=cmbBrowser.text;

 チェックボックスの状態による分岐を廃止し、コンボボックスのテキストを直接転記するよう修正しました。


・キャビネットのプロパティを変更する場合のブラウザエージェントの設定

  95:  end else begin
  96:    Item:=CabinetManager.Find('diary$stpl');
  97:    Item.PluginExecFileName:=cmbBrowser.text;
  98:    Item.PluginExecArg:='-H '+ txtURL.text +' -T スタパライフ stpl\stpl.mbx';
  99:  end;

 前のバージョンまでは、キャビネットに『スタパライフ』のアイテムが存在する場合は何もしませんでした。しかし、そのままだと使用するブラウザを変更した場合に設定が反映されないので、キャビネットアイテムが存在する場合は、プロパティの内容を変更しなければなりません。96行目を見れば分かるように、Itemという変数にCabinetManagerの検索結果を代入することにより、Itemという変数を経由してキャビネットアイテムのブラウザエージェントのプロパティを変更しています。もちろん、その他のプロパティを変更する場合も同じ方法が使えます。