ページにレイヤーを作成して、ページ上の図形を分類することができます。図形をレイヤーに割り当てるのは、名前付きで分類された図形に対して、レイヤーの表示/非表示、出力、変更からの保護を設定するためです。レイヤーを使用すると、背景ページに図形を配置したり、図形をグループ化する必要がありません。図形のレイヤーは、図形の積み重ねの順序やグループ内の図形のメンバーから独立しています。
マスタシェイプはレイヤーに関連付けることができます。レイヤーを持つマスタシェイプを図面にドロップすると、そのマスタシェイプのインスタンスはページ上のレイヤーに割り当てられます。レイヤーがまだ存在しない場合は、Visio® インスタンスによってレイヤーが作成されます。
プログラムからレイヤーを処理するときは、図面ページまたはマスタシェイプで利用できるレイヤー、または図面内の図形が割り当てられているレイヤーを確認することができます。図形をレイヤーに割り当てたり、追加したり、削除したりできます。[レイヤー プロパティ] ダイアログ ボックスまたはシェイプシート (ShapeSheet®) ウィンドウの [レイヤー] セクションでレイヤーのプロパティを設定する場合と同じような方法で、レイヤーの表示/非表示を切り替えたり、レイヤーの出力または編集を可能にしたり、その他のレイヤー設定を変更したりすることができます。
このセクションの内容...
ページまたはマスタシェイプに対して定義されているレイヤーを確認するには、ページまたはマスタシェイプの Layers プロパティを取得します。このプロパティは、ページまたはマスタシェイプに定義されている各レイヤーごとの Layer オブジェクト が格納された Layers コレクションを返します。ページまたはマスタシェイプにレイヤーが存在しない場合、Layers コレクションは空になります。Layer オブジェクトには、レイヤーの名前を文字列で返す Name プロパティがあります。これは、Layer オブジェクトのデフォルトのプロパティです。
Layers コレクションから Layer オブジェクトにアクセスするには、名前またはインデックスを使用します。たとえば、"給排水" という名前のレイヤーの場合は、次のステートメントを使用して Layer オブジェクトを取得します。
Set layerObj = layersObj.Item("給排水")
次の例は、コレクション内のすべてのレイヤーを取得して、それらの名前を Visual Basic エディタ のデバッグ ウィンドウに出力します。
Sub GetLayers ()
Dim pagObj As Visio.Page
Dim layersObj As Visio.Layers
Dim layerObj As Visio.Layer
Dim layerName As String
Set layersObj = pagObj.Layers
For Each layerObj In layersObj
layerName = layerObj.Name
Debug.Print layerName
Next
End Sub
ほとんどのコレクションと同じように、Layers コレクション内のオブジェクトには、1 から始まるインデックスが付けられます。コレクション内の各レイヤーは、ページまたはマスタシェイプの [レイヤー] セクションに 1 行で表示されます。
Layer オブジェクトの Index プロパティは、Layers コレクション内のレイヤーのインデックスを表します。Layer オブジェクトの Row プロパティは、ページ シートの [レイヤー] セクションの対応する行を表します。通常、インデックス番号と対応する行番号は異なります。
Shape オブジェクトの LayerCount プロパティを使用して、図形が割り当てられているレイヤーの合計数を取得し、次に、その Shape オブジェクトの Layer プロパティを使用して、特定のレイヤーを取得します。たとえば、次のステートメントは、図形が割り当てられている 2 番目のレイヤーを取得します。
Set layerObj = shpObj.Layer(2)
Layer オブジェクトの Name などの プロパティを確認して、そのレイヤーの詳細を調べます。
図形がどのレイヤーにも割り当てられていない場合、LayerCount プロパティは 0 を返し、その図形の Layer プロパティを取得すると、エラーが発生します。
図形をレイヤーに割り当てるには、その Layer オブジェクトの Add メソッドを使用します。例を次に示します。
layerObj.Add shpObj, preserveMembersFlag
グループをレイヤーに割り当てるときに、そのグループ内の図形のレイヤー メンバーに影響を与えたくない場合、preserveMembersFlag 引数には非ゼロ (True) を使用する必要があります。それ以外の場合は、0 (False) を使用して、単一の図形またはグループ、およびそのメンバーをそのレイヤーに割り当てます。
レイヤーから図形を削除するには、その Layer オブジェクトの Remove メソッドを使用します。レイヤーを削除する際の引数は、レイヤーを追加する場合の引数と同じです。例を次に示します。
layerObj.Remove shpObj, preserveMembersFlag
レイヤーをページまたはマスタシェイプに追加するには、Page オブジェクトまたは Master オブジェクトの Layers コレクションの Add メソッドを使用します。たとえば、"給排水" という名前の新しいレイヤーをページに追加するには、次のステートメントを使用します。
Set layersObj = pagObj.Layers
Set layerObj = layersObj.Add("給排水")
新しいレイヤーの名前は、そのページまたはマスタシェイプで一意でなければなりません。名前に問題がなければ、Add メソッドは新しいレイヤーを表す Layer オブジェクトを返します。
ページまたはマスタシェイプからレイヤーを削除するには、その Layer オブジェクトの Delete メソッドを使用します。例を次に示します。
layerObj.Delete deleteShapesFlag
レイヤーに割り当てられている図形を削除する場合の deleteShapesFlag 引数には、非ゼロ (True) を使用する必要があります。0 (False) を使用すると、図形は保持されます。図形のレイヤー割り当ては、削除したレイヤーを参照しないように更新されます。
[レイヤー プロパティ] ダイアログ ボックスの設定を変更して、レイヤーを表示したり、印刷可能にしたり、レイヤーの強調表示色などを設定することができます。
プログラムからレイヤーの設定を変更する場合は、これらの設定を制御するセルの数式を設定します。これには、Layer オブジェクトの CellsC プロパティを使用して、変更したい設定を制御するセルを取得し、そのセルの数式を設定します。
たとえば、レイヤーの名前が格納されたセルにアクセスするには、次のようなステートメントを使用します。
Set layerCellObj = layerObj.CellsC(visLayerName)
ヒント ページ シートを表す Shape オブジェクトの CellsSRC プロパティを使用して、レイヤー設定にアクセスすることもできます。詳細については、「第 17 章 数式のオートメーション化」を参照してください。
レイヤーが表示されているかを判断するには、次のようなステートメントを使用します。
If layerObj.CellsC(visLayerVisible).ResultIU = 0 Then
text1.Text = "非表示"
Else
text1.Text = "表示"
End If
レイヤーを非表示にするには、次のステートメントを使用します。
Set layerCellObj = layerObj.CellsC(visLayerVisible)
layerCellObj.Formula = False or 0
定数 visLayerName および visLayerVisible は、Visio タイプ ライブラリで定義されています。レイヤーの設定を制御する定数の一覧については、「付録 B シェイプシートのセクション、行、セル インデックス」を参照してください。Visio でレイヤーの設定を変更する方法の詳細については、Visio 製品付属のオンライン ヘルプ「[レイヤー プロパティ] ダイアログ ボックス」を検索してください。