サポート > PC-MAPPING ヒント集 > その他 > HTMLメニューを利用して属性検索を行なう
HTMLメニューを利用して属性検索を行なう
クイックバーからHTMLメニューを表示し、検索条件を入力し、検索を実行します。
また、HTMLメニューはクイックバーから表示するだけでなく、HTMLメニューバーとして登録、表示する事ができます。
詳しくは「■ 補足」をご覧下さい。
■ サンプル
サンプル[other39.zip(約38KB)]をダウンロードする
Sample.pcm:サンプルプロジェクト
lotnum_js.html:HTMLメニュー(JScript)
lotnum_vbs.html:HTMLメニュー(VBScript)

【ダウンロードサンプルの使用上の注意点】
ダウンロードした圧縮ファイルから解凍されたファイルには「セキュリティブロック」がかかります。
「セキュリティブロック」がかかった状態では、スクリプトが動作しない可能性があります。
解凍したファイルをマウス右クリックし、メニューから「プロパティ」をクリックすると、「全般」パネルの下部に「セキュリティ:」欄が表示されますので、「許可する」チェックボックスをONにして下さい。

■ 概要
クイックバーからHTMLメニューを表示し、検索条件を入力し、検索を実行します。

■ HTMLの確認
  1. 以下のようにhtmlファイルを記述します。
    JScriptの場合「lotnum_js.html」、VBScriptの場合「lotnum_vbs.html」をメモ帳等で開いて確認して下さい。
    要点1

    <td class="td1" nowrap="nowrap">大字</td>
    <td>
    <select style="width:100px" name="Lotnum1">

    大字はドロップダウンリストから選択します。
    ドロップダウンリストから選択した結果をnameからスクリプトで取得する事ができます。
    小字も同様です。

    要点2

    <input style="width:200px" type="text" name="Lotnum3" value="" />

    テキストボックスに入力された文字列をnameからスクリプトで取得する事ができます。

    要点3
    JScriptの場合

    <input type="button" value="検索実行" onClick="Search()" />

    <検索実行>ボタンを配置します。onClickからスクリプトを実行する事ができます。

    VBScriptの場合

    <input type="button" name="Search" value="検索実行" />

    <検索実行>ボタンを配置します。nameからスクリプトを実行する事ができます。

  2. <検索実行><選択解除>ボタンを押したときに実行されるスクリプトは以下のようになります。
    要点1
    JScriptの場合

    function Search(){

    }

    「Search()」は、<Search>ボタンのnameに該当します。
    <Search>ボタンを押すと、このプロシージャが実行されます。

    VBScriptの場合

    Sub Search_OnClick()

    End Sub

    「Search」は、<Search>ボタンのonClickに該当します。
    <Search>ボタンを押すと、このプロシージャが実行されます。

    要点2
    JScriptの場合
    if(objArrayLong.GetNum() == 0){
    lngTemp = objDb.SearchRecByStrEx2(lngFieldID, Lotnum1.value, objArrayLong, 2, 0);
    }else{
    lngTemp = objDb.SearchRecByStrEx2(lngFieldID, Lotnum1.value, objArrayLong, 2, 10);
    }

    VBScriptの場合
    If objArrayLong.GetNum() = 0 Then
    lngTemp = objDb.SearchRecByStrEx2(lngFieldID, Lotnum1.Value, objArrayLong, 2, 0)
    Else
    lngTemp = objDb.SearchRecByStrEx2(lngFieldID, Lotnum1.Value, objArrayLong, 2, 10)
    End If

    データベース:SearchRecByStrEx2メソッドで、「Lotnum1.value」の文字列と厳密一致するベクターを検索します。
    このとき、第5引数は、絞込み検索の有無を示し、「0」は絞り込みを行なわない、「10」は厳密一致で絞込みを行ないます。

    要点3
    JScriptの場合

    function SelClear(){

    }

    「SelClear()」は、<SelClear>ボタンのnameに該当します。
    <SelClear>ボタンを押すと、このプロシージャが実行されます。

    VBScriptの場合

    Sub SelClear_OnClick()

    End Sub

    「SelClear」は、<SelClear>ボタンのonClickに該当します。
    <SelClear>ボタンを押すと、このプロシージャが実行されます。

  3. <閉じる>ボタンを押したときに実行されるスクリプトは以下のようになります。
    JScriptの場合
    function Cancel(){
    objPcm = new ActiveXObject("Pcm.App");
    blnTemp = objPcm.HtmlMenuClose();
    }

    VBScriptの場合
    Sub Cancel_OnClick()
    Set objApp = CreateObject("Pcm.App")
    blnTemp = objApp.HtmlMenuClose
    End Sub

    また、アンカーリンク <A HREF="app:Exit">閉じる</A> でもHTMLメニューを閉じる事ができます。

■ クイックバーへの登録
JScriptの場合「lotnum_js.html」、VBScriptの場合「lotnum_vbs.html」を記述します。
ここでは、「lotnum_js.html」を例に記述します。

  1. 「lotnum_js.html」をHTMLメニューで開くよう、クイックバーにボタンを設定します。
    要点1
    コマンド:HtmlMenu lotnum_js.html

    コマンド「HtmlMenu」を使用します。
    第1パラメータにHTMLメニューで開くhtmlファイル(ここでは「lotnum_js.html」)を指定します。
    これ以外にも複数のパラメータがあります。

    コマンド "HtmlMenu"
    指定のHTMLファイルを表示する専用ウィンドウを起動し、このウィンドウが閉じられるまで、このウィンドウ以外の操作を抑制します。
    即ち、このウィンドウが一種のダイアログ(モーダル)になります。
    したがって、PC-MAPPINGをオートメーションで操作するようなスクリプトを記述したHTMLファイルを作成すれば、これによって、独自のメニューとして利用可能になります(プレゼンテーションビューワーパックでは使用不可)。

    なお、HtmlMenuファイル名は、そのパスに見つからない場合は、
    1. 現在のアクティブなドキュメントのパス(があれば)、その相対パスの検索
    2. 現在のアクティブなドキュメントがプロジェクトに所属するDBであれば、そのプロジェクトのパスとの相対パス検索
    3. 起動オプション-prmdir指定のフォルダー検索
    4. PC-MAPPING起動フォルダー検索
    の順に探索して見つかったものを使用します。

    [コマンドパラメーター]
    HtmlMenu△HtmlFile△-pos△X△Y△-size△Dx△Dy△-modeless△-autoreload

    HtmlFile:htmlMenuファイルパス
    X:HTMLウィンドウ左上縦位置(ピクセル)
    省略できます。
    Y:HTMLウィンドウ左上横位置(ピクセル)
    省略できます。
    Dx:HTMLウィンドウ縦サイズ(ピクセル)
    省略できます。
    Dy:HTMLウィンドウ横サイズ(ピクセル)
    省略できます。
    -modeless:HTMLファイル表示時に別ウィンドウ処理を有効にします。
    省略した場合、HTMLファイル表示時に別ウィンドウ処理を無効にします。
    -autoreload:プロジェクトを保存するとHTMLファイルも保存対象とします。
    -modeless使用時のみ有効です。また、修正が行われた場合、HTMLウィンドウを再読み込みします。

    [使用例]
    HTMLで作成したメニューバーを表示します。
    HtmlMenu△D:\下水道管理\htmlmenu.htm△-pos△200△300△-size△50△300△-modeless

■ 実行
  1. Sample.pcmを開きます。

  2. クイックバーに登録した<地番検索>ボタンを押します。すると、以下のようなHTMLメニューが表示されます。

  3. 「大字」「小字」を入力し、<検索実行>ボタンを押します。すると、以下のように検索されます。

  4. もちろん、「地番」まで入力すると、さらに絞り込んで検索する事ができます。

■ 補足
HTMLメニューはクイックバーから表示するだけでなく、HTMLメニューバーとして登録、表示する事ができます。
PC-MAPPINGがインストールされているフォルダーに「PcmHtmlMenu.html」ファイルが存在する場合、これをHTMLメニューバーとして表示します。
また、[ワークスペース]リボン-[カスタマイズ]-[HTMLメニューバー]から特定のHTMLファイルを登録する事ができます。
HTMLメニューバーを表示するには、[ワークスペース]リボン-[クイックバー]-[HTMLメニューバー]を実行します。

■ 注意
データベースの検索やそれにかかわる処理で、以下のような場合は、VBScriptエンジンが適切にインストールされていないか、VBScriptエンジンのバージョンが低い可能性があります。
  • 「サポートしていないメソッドまたはプロパティです」のエラーメッセージが出る。
  • 正規表現を使った検索ができない。

対策その1 【VBScriptエンジンを適切にインストールする】
VBScript.dllファイルの登録を解除し、その後、再登録します。
これらの処理には、管理者またはパワーユーザの権限が要求される場合があります。
次の手順は、WindowsがC:\windowsにインストールされている事を前提としています。

  1. VBScript.dllファイルの登録を解除するには、コマンドプロンプトで次のように入力します。
    regsvr32.exe c:/windows/system32/VBScript.dll /u
  2. VBScript.dll ファイルを再登録するには、コマンドプロンプトで次のように入力します。
    regsvr32.exe c:/windows/system32/VBScript.dll

これで改善されない場合は、以下の2通りの方法を採って下さい。

対策その2-A 【マイクロソフトのサイトからWindows Script 5.7をダウンロードしてインストールする】
Windows Script 5.7 for Windows XP

対策その2-B 【WindowsUpdateなどを使ってインターネットエクスプローラを最新(6.0 SP1以上)にする】
お使いのマシンで実行して下さい。