前のトピック     次のトピック

第 18 章 オートメーションによる作図

セクション 5   レイヤー

ページにレイヤーを作成して、ページ上の図形を分類することができます。図形をレイヤーに割り当てるのは、名前付きで分類された図形に対して、レイヤーの表示/非表示、出力、変更からの保護を設定するためです。レイヤーを使用すると、背景ページに図形を配置したり、図形をグループ化する必要がありません。図形のレイヤーは、図形の積み重ねの順序やグループ内の図形のメンバーから独立しています。

マスタシェイプはレイヤーに関連付けることができます。レイヤーを持つマスタシェイプを図面にドロップすると、そのマスタシェイプのインスタンスはページ上のレイヤーに割り当てられます。レイヤーがまだ存在しない場合は、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 プロパティは、ページ シートの [レイヤー] セクションの対応する行を表します。通常、インデックス番号と対応する行番号は異なります。

TOP へ

図形が割り当てられているレイヤーの確認

Shape オブジェクトの LayerCount プロパティを使用して、図形が割り当てられているレイヤーの合計数を取得し、次に、その Shape オブジェクトの Layer プロパティを使用して、特定のレイヤーを取得します。たとえば、次のステートメントは、図形が割り当てられている 2 番目のレイヤーを取得します。

Set layerObj = shpObj.Layer(2)

Layer オブジェクトの Name などの プロパティを確認して、そのレイヤーの詳細を調べます。

図形がどのレイヤーにも割り当てられていない場合、LayerCount プロパティは 0 を返し、その図形の Layer プロパティを取得すると、エラーが発生します。

TOP へ

レイヤーに対する図形の割り当ておよび削除

図形をレイヤーに割り当てるには、その Layer オブジェクトの Add メソッドを使用します。例を次に示します。

layerObj.Add shpObj, preserveMembersFlag

グループをレイヤーに割り当てるときに、そのグループ内の図形のレイヤー メンバーに影響を与えたくない場合、preserveMembersFlag 引数には非ゼロ (True) を使用する必要があります。それ以外の場合は、0 (False) を使用して、単一の図形またはグループ、およびそのメンバーをそのレイヤーに割り当てます。

レイヤーから図形を削除するには、その Layer オブジェクトの Remove メソッドを使用します。レイヤーを削除する際の引数は、レイヤーを追加する場合の引数と同じです。例を次に示します。

layerObj.Remove shpObj, preserveMembersFlag

TOP へ

ページおよびマスタシェイプに対するレイヤーの追加および削除

レイヤーをページまたはマスタシェイプに追加するには、Page オブジェクトまたは Master オブジェクトの Layers コレクションの Add メソッドを使用します。たとえば、"給排水" という名前の新しいレイヤーをページに追加するには、次のステートメントを使用します。

Set layersObj = pagObj.Layers
Set layerObj = layersObj.Add("給排水")

新しいレイヤーの名前は、そのページまたはマスタシェイプで一意でなければなりません。名前に問題がなければ、Add メソッドは新しいレイヤーを表す Layer オブジェクトを返します。

ページまたはマスタシェイプからレイヤーを削除するには、その Layer オブジェクトの Delete メソッドを使用します。例を次に示します。

layerObj.Delete deleteShapesFlag

レイヤーに割り当てられている図形を削除する場合の deleteShapesFlag 引数には、非ゼロ (True) を使用する必要があります。0 (False) を使用すると、図形は保持されます。図形のレイヤー割り当ては、削除したレイヤーを参照しないように更新されます。

TOP へ

レイヤーの設定の変更

[レイヤー プロパティ] ダイアログ ボックスの設定を変更して、レイヤーを表示したり、印刷可能にしたり、レイヤーの強調表示色などを設定することができます。

プログラムからレイヤーの設定を変更する場合は、これらの設定を制御するセルの数式を設定します。これには、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 製品付属のオンライン ヘルプ「[レイヤー プロパティ] ダイアログ ボックス」を検索してください。

Top