サポート > PC-MAPPING ヒント集 > スクリプト > イベント駆動型スクリプティングI [レコードからベクター検索]
イベント駆動型スクリプティングI [レコードからベクター検索]
データベースウィンドウのレコードをマウス左ボタンでクリックし、ベクターを表示するには、通知するイベント「OnLDown()」「OnSHLDown()」等を使用し、スクリプトを記述します。
なお、内部属性ウィンドウのレコードをクリックし、ベクターを表示するには、[データベース]リボン-[ベクター検索]-[現在のレコードの自動追従ベクターデータ検索]から行えます。
■ サンプル
サンプル[script45.zip(約40KB)]をダウンロードする
Sample.pcm:サンプルプロジェクト

■ 準備
  1. ダウンロードしたファイルを解凍します。ここでは、「C:\sample\script45」とします。

  2. PC-MAPPINGを起動します。

  3. 「C:\sample\script45\Sample.pcm」を開きます。

  4. 「地目辞書」データベースウィンドウをアクティブにし、[データベース]リボン-[設定]-[データベースの定義]を実行し、「スクリプト」パネルを開きます。

■ 解説
「地目辞書」データベースウィンドウの左インデックス部分(Side head)をマウス左ボタンでクリックしたとき、クリックしたレコードの「CODE」フィールドの値から「画地」レイヤーポリゴン内部属性「地目」フィールドと一致するポリゴンを検索し、該当ポリゴンを選択、画面中央に表示します。
プロジェクトに登録されている「地目辞書」データベースには、以下のように「スクリプト」パネルへ記述され、「通知するイベント」チェックボックスがONになっています。
要点1
function OnSHLDown(para1, para2, para3)
{
:
}

データベースウィンドウの左インデックス部分(Side head)をマウス左ボタンでクリックしたときに発生するイベントです。
OnSHLDown()を実行すると、第一引数に「フィールド番号」、第二引数に「レコード番号」、第三引数に「シフトキーの状態」を返します。
なお、データベースウィンドウの左インデックス部分をマウス左ボタンでクリックするため、この「フィールド番号」は必ず”-1”、この「レコード番号」は”0”からの順番号なので、左インデックス部分に表示されているレコードIDから”-1”した値を返します。
よって、
var id = parseInt(para2, 10) + 1;
は、第二引数に”+1”した値をレコードIDとして使用しています。

要点2
var db = GetEventDb();
データベースのイベントスクリプト専用のメソッドで、実行しているイベントスクリプトのデータベースオブジェクトを取得します。
これ以外に、GetEventDbDoc()メソッドがあります。
なお、プロジェクトのイベントスクリプト専用のメソッドでは、GetEventPcmDoc()、GetEventProject()メソッドがあります。

要点3
var code = db.GetCellAsInteger(id, db.FindField(keyfTitle), false);
データベースウィンドウの左インデックス部分をマウス左ボタンでクリックしたレコードの「CODE」フィールドの値を取得しています。

■ 実行
  1. 「地目辞書」データベースウィンドウをアクティブにします。

  2. 「地目辞書」データベースウィンドウの左インデックス部分から”1”をマウス左ボタンでクリックします。
    すると、「画地」レイヤーから黄緑色のポリゴン(田)が選択状態になり、画面中央に表示されます。

  3. 「地目辞書」データベースウィンドウの左インデックス部分から”2”をマウス左ボタンでクリックします。
    すると、「画地」レイヤーから橙色のポリゴン(畑)が選択状態になり、画面中央に表示されます。