解説

実例で学ぶWindowsプログラミング

第3回 ユーザビリティを高めるファンクション・バーの実装(前編) 

デジタルアドバンテージ 一色 政彦
2005/02/23
Page1 Page2 Page3


Back Issue
1
MDI型Windowsアプリケーションの基礎開発
2
継承と属性プログラミングで実現するRAD開発 

 前回作成したWindowsアプリケーションのユーザー・インターフェイスを、今回もさらに機能拡張していこう。今回〜次回は、前後編に分けて「ファンクション・バー」の実装について解説する。

■「ファンクション・バー」とは何か?

 ファンクション・バーとは、[F1]〜[F12]のファンクション・キーの入力を専門的に受け付けるツールバーのことである。特に業務系のWindowsアプリケーションでは、この手の機能がよく利用されている。その理由は、ファンクション・キーがキーボード上部に並んでいるためにキーボードに不慣れなユーザーにも扱いやすく、そのボタンを1つ押すだけで手軽に処理を実行でき、ユーザーの作業効率が高まるからだろう。

 本稿でもそのような効果を狙って、下の画面のようなインターフェイスを持つファンクション・バーを実装してみることにする。

フォーム上に追加された本稿で作成するファンクション・バー
業務系Windowsアプリケーションでは、操作性を高めるために、しばしばファンクション・キーに特定の処理を関連付ける。これをツールバー上にボタンとして表示したものが、ファンクション・バーである。
  ファンクション・キーに対応したツールバーである「ファンクション・バー」。
  ファンクション・キーに対応したメニュー・バーである「ファンクション・メニュー」。

 上の画面を見て分かるように、今回〜次回で作成するアプリケーションでは、「ファンクション・ボタン」(=キーボード上部にある[Escape]、[F1]〜[F12]のキーに対応したボタン)を備えたツールバーを作成する。

 また同様に、ファンクション・キーに関連付けられたメニュー項目を持つメニュー・バーを作成する。これは本稿では、「ファンクション・メニュー」と呼ぶ。

■前後編の解説の流れ

 これら2つのコントロールの実装手順を、次の順番で説明していく。なお、( )内に記載されている内容は、そこで解説されるポイントとなる技術項目である。

【前編】
  1. ファンクション・バーの実装(イメージ・リストの使い方とコンポーネントの概念)
 
【後編】
  2. ファンクション・メニューの実装(マージ機能と独自イベント機能)
  3. ファンクション・バーとファンクション・メニューのフォームへの追加

 前編である今回は1のみで、2と3は次回後編で説明する。

 なお、本稿のサンプル・アプリケーションのソース・コードの分量の多さから見て、そのすべてのコードを逐一解説するのは不可能である。よって、実装上の重要ポイントに焦点を絞って解説していく。あらかじめご了承いただきたい。

 それでは、さっそくファンクション・バーの構築に取り掛かろう。

1. ファンクション・バーの実装(イメージ・リストの使い方とコンポーネントの概念)

 本稿で作成するファンクション・バーは、ファンクション・ボタンを備えたツールバーのことである。このツールバーは、すべてのMDI子ウィンドウで使い回せるようにコントロール(コントロール名は「FunctionBar」)として作成する。

■FunctionBarコントロールの作成

 FunctionBarコントロールは、前回作成したクラス・ライブラリ内に作成しよう。作成方法は前回と同じだ。いったんカスタム・コントロールとして作り、その後、ToolBarコントロールを継承するために、継承元のコントロールを書き換える(よく分からない場合には、前回の「既存の標準Windowsコントロールを継承したコントロール」の作成方法を再度参照されたい)。作成時に指定するファイル名などは次のとおりだ。

  • ファイル名:「FunctionBar.cs」
  • 名前空間名:「Insiders.Windows.Forms」
  • クラス名:「FunctionBar」
  • 継承元クラス:「ToolBarコントロール(System.Windows.Forms名前空間)」

 前回の手順に従ってコントロールを新規作成すると、Visual Studio .NET(以降、VS.NET)によって生成されるひな形コード内に、OnPaintメソッドをオーバーライドしたメソッドが自動的に追加されるが、このメソッドは使わないのでここで削除してしまおう。また前回のコントロール作成と同じように、クラスに対してToolboxBitmap属性を指定して、VS.NET IDEのツールボックス上にToolBarコントロールのビットマップ・アイコンが表示されるようにしておく。

■ImageListコンポーネントの作成と設定

 ファンクション・バーは、ToolBarコントロールを継承しているので、当然ながらツールバーが持つすべての機能を利用できる。例えばツールバーには、コントロール上に並べられたボタンにテキストと画像を表示する機能があるが、ファンクション・バーでも、このテキストと画像の表示機能を利用することができる。

【コラム】コンポーネントとコントロールの違いについて
コンポーネントとコントロールの違いは、コンポーネントがSystem.ComponentModel名前空間Componentクラスからの派生クラスであるのに対し、コントロールがSystem.Windows.Forms名前空間Controlクラスの派生クラスであるという点だ。しかし実は、このControlクラスもComponentクラスから派生したものなので、コントロールはコンポーネントの一種ということになる。つまり単純に考えれば、自らユーザー・インターフェイスを持つコンポーネントがコントロールで、持たないコンポーネントはただのコンポーネントであると考えればよいだろう。

 実際にツールバーで画像を表示するには、そこで使われる複数の画像をあらかじめリスト化して準備しておく必要がある。.NETでこれを行うのが、ImageListコンポーネント(System.Windows.Forms名前空間)だ。

 そこでこのImageListコンポーネントをFunctionBarコントロールに追加してみよう。といっても、VS.NETを使えば簡単だ。FunctionBar.csをVS.NET IDEのデザイナ画面で開き、そのデザイナ上にImageListコンポーネントを(通常のコントロールと同じように)ツールボックスからドラッグ&ドロップすればよい。

 それを実際に行っているのが、次の画面だ。

FunctionBarコントロールへのImageListコンポーネントの追加
FunctionBar.csをデザイナ画面で開き、ツールボックス(の[Windows フォーム]カテゴリ)から[ImageList]コンポーネントを、そのデザイナ上にドラッグ&ドロップする。この作業により、FunctionBarコントロールにImageListコンポーネントが追加される。その際インスタンス変数名が自動的に「imageList1」と命名されるが、本稿ではこの名前のまま使うことにする。

 あとはこのImageListコンポーネントにボタンとして表示したい画像を登録すればよいわけだ。

 しかしその具体的な登録方法の解説に入る前に、実は、この何気ないImageListコンポーネントの追加により、FunctionBarコントロールのコードに「重要な変化」が発生しているので、それについて説明を加えておきたい(以降しばらく、本稿本来の趣旨である「実装方法の解説」からは少し外れた内容が続くが、.NETのWindowsアプリケーション開発では役立つ知識なので、ぜひここで述べさせていただきたい)。


 INDEX
  解説:実例で学ぶWindowsプログラミング
  第3回 ユーザビリティを高めるファンクション・バーの実装(前編)
  1.ファンクション・バーとは何か?
    2.VS.NETが提供するリソース破棄の仕組み
    3.ファンクション・バーの実装方法
 
インデックス・ページヘ  「解説:実例で学ぶWindowsプログラミング」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH