KoMaDo   VISIO SQUARE : VB/VBA  ■ Headline ■ HOME    

VB/VBAトップへ ▼カッ飛び最後 

  GlueToについて

01: 名前:沙那投稿日:2002/03/06(水) 16:21
みなさん、始めまして!
GlueToについてお伺いします。
わたしもとあるプログラム言語からフローチャートを作るようにVISIOで
プログラムを組もうとしたのですが、のっけからつまづいてしまいました。
四角のシェイプと四角のシェイプをコネクタでつなぎたいという
だけなのですが、うまくいきません。
過去ログを見てGlueToを使えばいいということでしたので、
使ってみたのですが、きっと使い方とかがまずいのだと思いますが、
それぞれのシェイプが現れることは現れるのですが、接続されません。
処理は正常に終わるのですが・・・
どのように対処すればよいかご教授願います。
***以下ソース***
Dim MSH As Visio.Master
Dim CSH As Visio.Shape
Dim SH1 As Visio.Shape
Dim SH2 As Visio.Shape
Set MSH = ActiveDocument.Masters("動的コネクタ")
Set CSH = ActivePage.Drop(MSH, 0, 0)
Set SH1 = ActivePage.DrawRectangle(1, 1, 3, 2)
Set SH2 = ActivePage.DrawRectangle(1, 3, 3, 4)
CSH.Cells("BeginX").GlueTo SH1.Cells("Connections.X1")
CSH.Cells("EndX").GlueTo SH2.Cells("Connections.X2")

02: 名前:投稿日:2002/03/06(水) 18:19
接続されない原因は、
SH1/SH2両方のシェイプに接続ポイントが無いためです。
プログラムを見ますと、
GlueToメソッドの引数に接続ポイントセルを指定していますが、
SH1/SH2共にシェイプを作成した後に、接続ポイントを追加していません。
解決方法としては、
@接続ポイントを追加した四角シェイプをステンシルに登録しておき、
 動的コネクタシェイプみたいにドロップする。
 (DrawRectangleメソッドではなくDropメソッドを使用)
Aプログラムで接続ポイントを追加する。
 (ShapeオブジェクトにあるAddSectionメソッドとAddRowメソッドを使用する)
といった2つの方法があります。
Aの方法は難しいですが、ステンシルに登録しないで済みます。

03: 名前:りょう投稿日:2002/03/06(水) 18:24
Dim shp1Obj As Visio.Shape
Dim shp2Obj As Visio.Shape
Dim shp3Obj As Visio.Shape
Dim dconObj As Visio.Master
Dim stnObj As Visio.Document

'図面に四角を2つ描いてるだけ
Set shp1Obj = Visio.ActivePage.DrawRectangle(1, 1, 2, 2)
Set shp2Obj = Visio.ActivePage.DrawRectangle(3, 3, 4, 4)

'基本フローチャートステンシルを開いて動的コネクタを図面の適当な位置にドロップ
Set stnObj = Visio.Documents.OpenEx("基本フローチャート.vss", visOpenDocked)
Set dconObj = stnObj.Masters("動的コネクタ")
Set shp3Obj = Visio.ActivePage.Drop(dconObj, 1, 1)

'ドロップした動的コネクタの始点・終点を接続したいシェイプの指定位置に接続
shp3Obj.Cells("BeginX").GlueTo shp1Obj.Cells("AlignTop")
shp3Obj.Cells("EndX").GlueTo shp2Obj.Cells("AlignBottom")

手抜きですが雰囲気は掴めると思います。

04: 名前:りょう投稿日:2002/03/06(水) 18:26
ハハッ、中さんと被りましたね(^_^;

05: 名前:沙那投稿日:2002/03/07(木) 09:09
ありがとうございます。
解決できました。


VB/VBAトップへ ▲カッ飛び先頭