図形が選択されているかどうかにかかわらず、プログラムから図形のプロパティおよびメソッドにアクセスできます。Selection オブジェクトを作成して複数の図形を処理することもできます。Selection オブジェクトは、Shape オブジェクトのセットを表し、Item プロパティおよび Count プロパティを持つという点で、Shapes コレクションと似ています。Shapes コレクションと異なるのは、Selection オブジェクトは選択された図形のみを表すことです。
Visio オブジェクト モデルの Selection オブジェクトとその上位オブジェクト
ウィンドウで選択されている図形を表す Selection オブジェクトを取得したり、任意の Shapes コレクションから指定した図形を表す Selection オブジェクトを作成することができます。Selection オブジェクト内の項目の順序は、項目が選択された順序に従います。最初に返される項目は、最初に選択された図形です。
このセクションの内容...
ユーザーがウィンドウ内で選択している図形を処理するには、Window オブジェクトの Selection プロパティを使用します。
Window.Selection は、図面ウィンドウで選択されている図形を表します。
次の例では、アクティブなウィンドウの Selection オブジェクトを取得しています。
selectObj = ActiveWindow.Selection
ページ上のすべての図形が選択されている場合、ウィンドウの Selection オブジェクトとページの Shapes コレクションは、同じ図形のセットになります。図形がまったく選択されていない場合、Selection オブジェクトは空になり、Selection オブジェクトの Count プロパティは、0 を返します。選択されている図形がプログラムに必要な場合は、アクティブなウィンドウの Selection プロパティをチェックして、少なくとも 1 つのオブジェクトが含まれていることを確認します。
Set selectObj = ActiveWindow.Selection
If selectObj.Count = 0 Then
MsgBox "先に図形を選択してください。", , "図形を選択してください"
Else
'Continue processing
End If
ウィンドウから取得する Selection オブジェクトは、ウィンドウで選択されている図形を表します。この後にウィンドウ内の選択内容を変更しても、取得した Selection オブジェクトには影響を与えません。
同じ図面ページを表示するウィンドウが複数存在する場合、ウィンドウごとに異なる図形を選択することができます。
デフォルトでは、Selection オブジェクトは、選択されている図形だけをレポートし、グループ内でサブ選択される図形はレポートには含まれません。サブ選択されている図形 (グループの子である図形) またはサブ選択されている図形の親であるグループをレポートするには、Selection オブジェクトの IterationMode プロパティのデフォルトの設定を変更します。Selection オブジェクトおよびそのプロパティの詳細については、Visio® 製品付属のオンラインヘルプ ([ヘルプ] メニューから [開発者用リファレンス] を選択) を参照してください。
選択内容に項目を追加するには、追加する図形の Select メソッドを使用して、選択する Shape オブジェクトを指定します。選択されている他の図形に影響を与えることなく、図形を選択に追加したり、図形の選択内容から図形を削除することができます。
Visio タイプ ライブラリで定義されている定数 visSelect および visDeselect は、実行されるアクションを制御します。たとえば、次のステートメントは、既に Selection オブジェクトに含まれている図形に図形を追加します。
selObj.Select shpObj,visSelect
次のステートメントは、選択内容から図形を削除します。
selObj.Select shpObj,visDeselect
確実に 1 つの図形のみが選択内容に含まれるようにするには、次のステートメントを使用します。
selObj.Select shpObj, visSelect + visDeselectAll
プログラムからウィンドウ内の図形を選択するには、Window オブジェクトの Select メソッドを使用して、選択する Shape オブジェクトを指定します。選択されている他の図形に影響を与えることなく、図形を選択内容に追加したり、選択内容から図形を削除することができます。たとえば、次のステートメントは、図面ウィンドウで既に選択されている図形セットに別の図形を追加します。
winObj.Select shpObj,visSelect
図面ページ上のすべての図形を選択するには、Window オブジェクトの SelectAll メソッドを使用します。選択されているすべての図形を選択解除するには、DeselectAll メソッドを使用します。SelectAll を使用した後に Selection オブジェクトを取得すると、新しい Selection オブジェクトには、そのウィンドウで表示される図面ページ上の個々の図形の Shape オブジェクトが含まれます。DeselectAll を使用した後に Selection オブジェクトを取得すると、新しい Selection オブジェクトは空になります。
Selection オブジェクトを取得したら、図面ウィンドウ内で実行できるアクションと同じような操作を、選択されている図形に対して実行できます。
たとえば、Window オブジェクトまたは Selection オブジェクトの Copy、Cut、Delete、または Duplicate メソッドを使用して、選択されている図形のコピー、切り取り、削除、または複製を実行することができます。例を次に示します。
selectObj.Delete
また、Union、Combine、および Fragment の各メソッドを使用して、接合、合成、および切り出しなどのブール演算を実行することもできます。これらのメソッドは、Visio の [面の接合]、[型抜き/合成]、および [切り出し] の各コマンドに対応しています。これらのコマンドは、選択されている図形を置き換える 1 つまたは複数の新しい図形を作成します。例を次に示します。
selectObj.Union
Union、Combine、または Fragment を使用する前に、操作対象の図形だけが選択されていることを確認してください。これらのメソッドを使用すると、元の図形は削除されます。このため、元の図形の数式はすべて失われ、その図形を表す Selection オブジェクトは最新のものではなくなります。
Selection オブジェクトによる実行可能な処理、ここで説明したオブジェクト、プロパティ、またはメソッドの詳細については、Visio 製品付属のオンラインヘルプ ([ヘルプ] メニューから [開発者用リファレンス] を選択) を参照してください。
Page オブジェクト、Master オブジェクト、または Shape オブジェクト (グループ) のうち、Selection オブジェクトがどのオブジェクトから図形を取得するかを確認するには、Selection オブジェクトの ContainingPage、ContainingMaster、および ContainingShape プロパティを使用します。