はじめに
Office 2007の各アプリケーションにある「リボン」には、クイックアクセスツールバーが組み込まれています。また、ウィンドウ下部には画面をズーム表示するトラックバーやコンボボックスが装備されています。
そこで、今回はこれらの機能を、前回作成したリボンを組み込んだエディタアプリケーションに追加してみました。
対象読者
Visual Basic 2005またはVisual C# 2005を使ってプログラムを作ったことのある人。
前回の記事
必要な環境
Visual Basic 2005またはVisual C# 2005、Visual Studio 2005でプログラムが作れる環境。
なお、本プログラムはWindows Vista上で動作するVisual Studioを使用して作成し動作確認を行っています。
プログラム実行時の注意事項
本稿の実行ファイル(バイナリファイル)を動かすには、zipファイルに同梱してある以下の2つのファイルが必要になります。
- C1.Win.C1Ribbon.2.dll…C1Ribbon コンポーネント(.NET Framework 2.0 用)
これらのファイルを、実行プログラムと同じフォルダに格納します。 .NET Framework 2.0から追加されたクラスやメンバを使用しているので、.NET Framework 2.0がインストールされていることが必須条件です。
コンポーネントのインストール
はじめてPowerTools Ribbon for .NETを使用する方は、プロジェクトにComponentOne Studio 2007 WinForms Editionをインストールする必要があります。
インストーラは、グレープシティのWebページからダウンロードできますので、ここからダウンロードしてインストールしてください。製品ページ左側の[ダウンロード]-[トライアル版]をクリックし、ダウンロード方法([FTP]または[HTTP])を選択すれば入手できます。ファイルはLZH形式で圧縮されています。
有償のコンポーネントですが、プロダクトキーを入力せずにインストールすることで、トライアル版として使用できます。制限事項などの詳細については、インストーラに同梱されているリリースノートを参照ください。
コントロールの追加
PowerTools Ribbon for .NETをインストールしたら、ツールボックスに専用のタブを作成し、PowerTools Ribbon for .NETコンポーネントを追加します。追加するコンポーネントは、「.NET Frameworkコンポーネント」の「名前空間」が「C1.Win.C1Ribbon」で始まる名前空間のコンポーネント「C1Ribbon」と「C1StatusBar」です。
クイックアクセスツールバーを組み込む
クイックアクセスツールバーとは、リボンのアプリケーションメニューの横に組み込まれる小さなボタンのことをいいます。ここにボタンを設定しておくと、リボンがどのタブになっていても、いつでもこのボタンに組み込んだ機能を呼び出して使用することができます。
このツールバーにボタンを組み込むには、一度リボンのタブにボタンを組み込み、これをクイックアクセスツールバーにも組み込む、という方法をとります。ここでは、RichTextBoxコントロールが持っているUndo・Redo機能をボタンから実行できるようにします。
ボタンの追加
まず、前回の記事『.NETでOffice 2007と同じ「リボンインターフェース」を持ったエディタを作る』で紹介した方法で、リボンの「編集」タブに2つのボタンを組み込みます。

ボタンの画像は、C1Ribbonコンポーネントが持っているリストから選び、テキストを「Undo」「Redo」に変えます。なお、画像は大小ともに同じものを設定してください。クイックアクセスツールバーには、小さいほうの画像が使用されます。
また、2つのボタンのNameプロパティを「ribbonButtonUndo」「ribbonButtonRedo」に変更します。

そして、組み込んだボタンをクリックし、「+QAT」というボタンを押します。これで、このボタンがクイックアクセスツールバーに配置されます(逆に、クイックアクセスツールバーから外したい場合は、「-QAT」ボタンを押します)。

リボンに配置した「Undo」「Redo」ボタンのClickイベントハンドラに、RichTextBoxコントロールのUndo・Redoメソッドを実行するコードを作成して出来上がりです。
Private Sub RibbonButtonUndo_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RibbonButtonUndo.Click Me.RichTextBox1.Undo() End Sub Private Sub RibbonButtonRedo_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RibbonButtonRedo.Click Me.RichTextBox1.Redo() End Sub
private void ribbonButtonUndo_Click(object sender, EventArgs e) { this.richTextBox1.Undo(); } private void ribbonButtonRedo_Click(object sender, EventArgs e) { this.richTextBox1.Redo(); }
ステータスバーにコンボボックスとトラックバーを組み込む
次に、ステータスバーにズーム機能を組み込むためのコンボボックスとトラックバーを組み込みます。ステータスバーは、C1Ribbonコンポーネントの下層に位置するC1StatusBarクラスを使ってデザインや処理を実装します。
C1StatusBarオブジェクトは、「LeftPain」と「RightPain」という2つのペインに分かれており、それぞれ下表にあるコントロールを組み込んで使うことができます。
- ボタン
- ラベル
- メニュー
- 区切り記号
- トグルグループ
- トグルボタン
- プログレスバー
- チェックボックス
- トラックバー
- コンボボックス
今回は、右側のペインに、コンボボックスとトラックバーを組み込み、RichTextBoxコントロールのズーム機能を使えるようにします。
トラックバーとコンボボックスを組み込む
ステータスバーにコントロールを組み込むには、フォームデザイン時は専用のエディタを使用します。
1.
フォームのステータスバーの部分をクリックし、プロパティウィンドウのオブジェクト名が「c1StatusBar1」になっているのを確認し、「RightPainItems」プロパティをクリックします。
2.
「c1StatusBar右ぺインアイテムコレクションエディタ」が表示されるので、「追加」ボタンの横の▼をクリックしてリストから「RibbonCombobox」を選びます。そして、次のプロパティを設定します。
プロパティ | 設定値 |
Label | Zoom |
Text | 100 |
TextAreaWidth | 30 |
3.
同じように、「追加」ボタンの横の▼をクリックしてリストから「RibbonTrackBar」を選びます。
そして、コレクションエディタのプロパティリストにある次のプロパティを設定します。これらは、TrackBarの動作範囲を設定するプロパティです。
プロパティ | 設定値 |
LargeChange | 10 |
Maximum | 500 |
Minimum | 10 |
SmallChange | 5 |
Value | 100 |
4.
コレクションエディタを閉じ、プロパティウィンドウの「RightPaneWidth」を200にします。これで、ステータスバーにコンボボックスとトラックバーが表示されます。
コンボボックスのリストとズーム機能の処理の作成
コンボボックスとトラックバーにズーム機能を実装します。
1.
フォームのLoadイベントハンドラで、コンボボックスのリストを追加する処理を作成します。リストは、最小値を10にし、後は50から50ずつ増えるようにします。
Private Sub RibbonForm1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Dim i As Integer Me.RibbonComboBox1.Items.Add(10) For i = 50 To 500 Step 50 Me.RibbonComboBox1.Items.Add(i) Next Me.RibbonComboBox1.Text = Me.RibbonTrackBar1.Value.ToString End Sub
private void RibbonForm1_Load(object sender, EventArgs e) { int i ; ribbonComboBox1.Items.Add("10"); for(i=50;i<=500;i+=50){ ribbonComboBox1.Items.Add(System.Convert.ToString(i)); } ribbonComboBox1.Text = System.Convert.ToString(ribbonTrackBar1.Value); }
2.
次に、RibbonTrackBarがクリックされた時の処理を作成します。これは、C1StatusBarオブジェクトのClickイベントハンドラを使用します。
まず、RibbonTrackBarのValueプロパティから現在の設定値を取り出し、倍率(%)に換算して変数に格納します。
そして、この値をRichTextBoxのZoomFactorプロパティに設定します。このZoomFactorプロパティは、RichTextBoxの画面の表示倍率を設定するプロパティで、1/64から64.0までの範囲の値をSingle型で設定すると、画面の表示をその倍率で行います。
また、RibbonTrackBarのValueプロパティの値を文字列に変換し、RibbonComboBoxのTextプロパティに代入しておきます。
Private Sub C1StatusBar1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles C1StatusBar1.Click Dim zoomsize As Single = Me.RibbonTrackBar1.Value / 100 Me.RichTextBox1.ZoomFactor = zoomsize Me.RibbonComboBox1.Text = Me.RibbonTrackBar1.Value.ToString End Sub
private void c1StatusBar1_Click(object sender, EventArgs e) { Single zoomsize = System.Convert.ToSingle(ribbonTrackBar1.Value)/100; richTextBox1.ZoomFactor = zoomsize; ribbonComboBox1.Text = System.Convert.ToString(ribbonTrackBar1.Value); }
3.
今度は、RibbonComboBoxのリストが選択された場合の処理です。これは、RibbonComboBoxのSelectedIndexChangedイベントハンドラで処理します。
といっても、選択されたリスト項目からズーム倍率を算出し、RichTextBoxのZoomFactorプロパティに設定するだけです。
設定したら、その値をRibbonTrackBarのValueプロパティに設定して、連動させておきます。
Private Sub RibbonComboBox1_SelectedIndexChanged(_ ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles RibbonComboBox1.Selecte Dim zoomsize As Single = _ CInt(Me.RibbonComboBox1.SelectedItem.Text) Me.RichTextBox1.ZoomFactor = zoomsize / 100 Me.RibbonTrackBar1.Value = zoomsize End Sub
private void ribbonComboBox1_SelectedIndexChanged(object sender, EventArgs e) { Single zoomsize = System.Convert.ToSingle(ribbonComboBox1.SelectedItem.Text); richTextBox1.ZoomFactor = zoomsize / 100; ribbonTrackBar1.Value = System.Convert.ToInt32(zoomsize); }
まとめ
MicrosoftがOffice 2007で導入した新しいGUIのリボンは、Windows VistaのGUIと合わせてこれまでにない外観をプログラムに実装できます。
この新しいGUIをプログラムに実装したいと思っている方は、ぜひPowerTools Ribbon for .NETのC1Ribbonコンポーネントを使ってみてください。