- 01: 名前:ねこ投稿日:2005/06/14(火) 15:43
- 以前、お世話になりました「ねこ」といいます。
「カスタムプロパティ」「サイズ/位置/回転」「パーンズーム」など、小さなウインドウを共有して表示しているのですが、タグに表示される名称が長すぎるため、選択に苦労しています。
ここの表示を任意の名称に変更して見易くすることはできないのでしょうか?
是非、旨い方法をお教えくださいませ。
宜しくお願い致します。
- 02: 名前:yoda投稿日:2005/06/14(火) 17:00
- >共有して表示しているのですが
これは、どういういみでしょうか?
>タグに表示される名称が長すぎるため
」「サイズ/位置/回転」や「パーンズーム」には、
「タグ」は見当たりませんが、どういうものを
「タグ」というのでしょうか?
- 03: 名前:yoda投稿日:2005/06/14(火) 17:22
- わかりました、単に重ねて表示するだけですね。
ウインドウを横に長くすればよいのではないでしょうか。
それでは、不便という場合に、いい方法はないと思いますが。
- 04: 名前:ねこ投稿日:2005/06/14(火) 20:10
- 説明が悪くてすみません。
yodaさんのおっしゃる通り”重ねている”状態ですが、どうしてもメイン領域を広く取りたいのでこのウインドウは狭く表示せざるを得ないので、横長にする訳にはいかず、かつ重ねる情報も多いので煩雑になってしまって困っています。
例えば、VBAでオブジェクトを取得して、ウインドウのプロパティで「ラベル」のようなものを強制的に書き換えてしまうことはできないでしょうか?
- 05: 名前:yoda投稿日:2005/06/14(火) 21:09
- 多分、ユーザが変えることはできないでしょう。
代案としては、常時画面を占拠するから、幅を
広くできないということであれば、重ねないで、
「自動的に隠す」にするか、あるいは、VBAを
使うのであれば、ワンタッチですばやく表示と
消去ができるようにする、ということでしょうか。
- 06: 名前:visGeek投稿日:2005/06/15(水) 10:23
- Windows(1).Windows.Item(1).Caption="abc"
で変更できます。
Windows(1).Windows.ItemFromID(visWinIDCustProp).Caption="abc"
では、なぜかエラーとなるようです。
また、図形の選択状態によって内容が変わる
ウィンドウ(カスタムプロパティウィンドウなど)では、
違う図形を選択するとウィンドウのキャプションが初期化されるようです。
イベントをハンドルして、都度キャプションを更新してやるしかないでしょう。
- 07: 名前:ねこ投稿日:2005/06/15(水) 16:30
- visGreek様
貴重な情報ありがとうございます。確かに変更できました!
でも、図形を選択するとすぐに戻ってしまうので、イベントを研究してみたのですが
いまいち、イベントの使い方がわかりません。
例えば、WindowActivated イベントを使うとしたら
Private Sub object_WindowActivated(ByVal Window As IVWindow)
<Windows(1).Windows.Item(1).Caption="abc" などの操作>
End sub
とした場合のobjecやByVal Window は、何になるのですか?
ご教示願います。
- 08: 名前:visGeek投稿日:2005/06/15(水) 19:31
- visGeekです。visGreedではありません。
この場合必要なのはWindowActivatedイベント
ではなくSelectionChangedイベントですね。
ThisDocumentモジュールに下記を
記述し、図面を開きなおしみてください。
VB(VBA)でイベントを扱う
一般的な方法は他のサイトで調べてください。
-----
Public WithEvents app As Application
Private Sub Document_DocumentOpened(ByVal doc As IVDocument)
Set wndMain = ActiveWindow
End Sub
Private Sub wndMain_SelectionChanged(ByVal Window As IVWindow)
Window.Windows(1).Caption = "abc"
End Sub
-----
と、本来ならこれでうまくいくはずですが
どうやらVisioがウィンドウのキャプションを更新するのは
SelectionChangedイベントが呼ばれた後のようです。
念のためApplicationオブジェクトのSelectionChangedも
ハンドルしてみましたが、Windowオブジェクトの
SelectionChangedより先に呼ばれるようです。
ということで、改良版は下記です。
-----
Public WithEvents app As Application
Private Sub Document_DocumentOpened(ByVal doc As IVDocument)
Set app = Application
End Sub
Private Sub app_VisioIsIdle(ByVal app As IVApplication)
If Windows(1).Windows(1).Caption <> "abc" Then
Windows(1).Windows(1).Caption = "abc"
End If
End Sub
-----
なおNoEventsPendingのハンドルでは
うまくいかなかったことを付け加えておきます。
- 09: 名前:yoda投稿日:2005/06/15(水) 20:44
- Windows(1).Windows.Item(1).Caption="abc"
を試してみなかったのは、うかつでした。
Windows(1).Windows.ItemFromID(visWinIDCustProp).Caption="abc"
で、できないので、早合点してしまいました。
■トップに戻る リロード 単独スレ表示
|