「複数のtoggleButton要素の中から1つだけしかオンにできないようにする」の関連記事です。
前回はtoggleButton要素のgetPressed属性を使いましたが、今回はgetEnabled属性を使って有効・無効を切り替えてみます。
[リボンXML]
<?xml version="1.0" encoding="utf-8"?> <customUI onLoad="tglSample_onLoad" xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon> <tabs> <tab id="tabSample" label="Sample Tab"> <group id="grpSample" label="Sample Group"> <toggleButton id="tglSample1" label="tgl1" size="normal" getEnabled="tglSample_getEnabled" onAction="tglSample_onAction" /> <toggleButton id="tglSample2" label="tgl2" size="normal" getEnabled="tglSample_getEnabled" onAction="tglSample_onAction" /> <toggleButton id="tglSample3" label="tgl3" size="normal" getEnabled="tglSample_getEnabled" onAction="tglSample_onAction" /> <toggleButton id="tglSample4" label="tgl4" size="normal" getEnabled="tglSample_getEnabled" onAction="tglSample_onAction" /> <toggleButton id="tglSample5" label="tgl5" size="normal" getEnabled="tglSample_getEnabled" onAction="tglSample_onAction" /> <toggleButton id="tglSample6" label="tgl6" size="normal" getEnabled="tglSample_getEnabled" onAction="tglSample_onAction" /> </group> </tab> </tabs> </ribbon> </customUI>
[標準モジュール]
Option Explicit Private myRibbon As IRibbonUI Private flgTgl As Long Private Sub tglSample_onLoad(ribbon As IRibbonUI) Set myRibbon = ribbon flgTgl = 0 '初期化 End Sub Private Sub tglSample_getEnabled(control As IRibbonControl, ByRef returnedVal) Select Case flgTgl Case 0 returnedVal = True Case Else If Right$(control.ID, 1&) = CStr(flgTgl) Then returnedVal = True Else returnedVal = False End If End Select End Sub Private Sub tglSample_onAction(control As IRibbonControl, pressed As Boolean) If pressed Then flgTgl = CLng(Right$(control.ID, 1&)) Else flgTgl = 0 End If myRibbon.Invalidate End Sub
上記コードを設定したファイルを開くと、”Sample Tab“タブとその中に6個のtoggleButton要素が表示されます。
「tgl5」をクリックすると、
「tgl5」以外のtoggleButton要素が無効になり、もう一度tgl5をクリックしてオフにすると、すべてのtoggleButton要素が有効になります。
この記事へのコメントはありません。