SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(ComponentOne)

メニューの代わりにファンクションキーで操作する.NETアプリケーションの作成

PlusPak for Windows Forms 6.0JのGcClassicFunctionKeyコントロールを使ったアプリケーションの作成

  • このエントリーをはてなブックマークに追加

GcClassicFunctionKeyコントロールについて

 GcClassicFunctionKeyは、キーボードのF1からF12までのファンクションキーと、Home、End、PageUp、PageDownの4つのキーの操作をフックし、それぞれに独自の機能を割り当てることができるコントロールです。コントロール全体の外観設定とイベント処理、ボタン全体のスタイル設定(スタイルセット)、個々のボタンの設定(キーセット)を行い、独自にデザインしたファンクションキーをフォームに実装できます。

 キーボード上でこれらのキーのいずれかが押されると、GcClassicFunctionKeyが最初にメッセージを受け取り、FunctionKeyPressイベントを発生させます。この処理は、GcClassicFunctionKeyにフォーカスがあるかどうかに関わらず、ファンクションキーを押した時点で、FunctionKeyPressイベントが発生し、このイベントハンドラに設定した処理が実行されます。

コントロールの外観と配置(スタイルセットの設定)

 GcClassicFunctionKeyに表示するボタンは、グループに分けたり、複数行にわたって表示したり、さまざまなカスタマイズが可能です。以下の5種類のスタイルセット(描画スタイル)が用意されています。

  • Office形式のフラットな描画スタイル(ActiveFlatStyleSet)
  • フラット形式の描画スタイル(FlatStyleSet)
  • ポップアップ形式の描画スタイル(PopupStyleSet)
  • 3D形式の描画スタイル(ThreeDStyleSet)
  • XPテーマに対応した描画スタイル(XPThemeStyleSet)

 これらのスタイルセットには名前(識別名)をつけることができ、その名前をActiveStyleSetプロパティに設定することで、そのスタイルセットがGcClassicFunctionKeyに適用されます。スタイルセットは複数持つことができ、アプリケーション実行中にスタイルセットを切り替えて使うこともできます。

 このスタイルセットでは、以下の項目を設定できます。ただし、Office形式のスタイルとXPテーマ形式のスタイルではそれぞれ文字色と背景色を設定できず、システムの設定が自動的に適用されます。

  • 画像とキャプションの水平方向の配置(AlignHorizontal)
  • 画像とキャプションの垂直方向の配置(AlignVertical)
  • ボタンの背景色(BackColor)
  • キャプションのフォント(Font)
  • キャプションの文字色(ForeColor)
  • キャプションに対する画像の相対的な配置(Position)
  • 画像とキャプションの間隔(Spacing)
  • ボタン内の上下左右のマージン(Margins)
  • キャプションに適用する3D効果(TextEffect)
  • キャプションのワードラップ(WordWrap)

 また、グリッドコントロールのセルと同じような感覚で、ファンクションキーをグループ分けにしたり、複数行を表示したりできます。これらは、ColumnGroupsプロパティとRowCountプロパティを使用し、行列数を指定して行います。

ファンクションキーをグループ分けにできる(ヘルプより抜粋)
ファンクションキーをグループ分けにできる(ヘルプより抜粋)

 また、ColumnSpacing(列の間隔)、RowSpacing(行の間隔)、GroupSpacing(グループの間隔)の3つのプロパティを使って各ボタンの間隔を設定できます。

ボタン間隔の設定と担当プロパティ(ヘルプより抜粋)
ボタン間隔の設定と担当プロパティ(ヘルプより抜粋)

 ControlBevelプロパティを使用して、GcClassicFunctionKeyコントロールの外枠の内側に、3D効果を付加するベベルを設定できます。ベベルの色、幅、明るさ、および暗さは、Bevel構造体のメンバを使って設定します。

メンバプロパティ 設定値
Color ベベルの色(System.Drawing.Color型)
Width ベベルの幅(Int32型:ピクセル単位)
Lightness ベベルの明るさ(Int32型:-100~100)
Darkness ベベルの暗さ(Int32型:-100~100)

 GcClassicFunctionKeyの上下左右の端からボタン表示領域の端までの距離は、Margins プロパティを使用します。また、GcClassicFunctionKeyをフォーム(コンテナ)の上下左右のどの辺にドッキングするかは、Dockプロパティで設定します。

各マージンの設定(ヘルプより抜粋)
各マージンの設定(ヘルプより抜粋)

個々のボタンの設定(キーセットの設定)

 GcClassicFunctionKeyでは、個々のファンクションキーのボタンに画像を表示したり、ボタン上にマウスポインタが置かれたときにツールチップを表示したりできます。

 これらのキーセットはスタイルセットごとに設定でき、キーセットに名前(識別名)を付けてActiveKeySetプロパティに設定することで、そのKeySetオブジェクトの設定内容をGcClassicFunctionKeyに反映できます。各キーには、以下の項目が設定可能です。

  • ボタンの背景色(BackColor)
  • ボタンの位置(ButtonIndex)
  • ボタン操作の可否(Enabled)
  • キャプションの文字色(ForeColor)
  • ボタンに表示する画像のインデックス(ImageIndex)
  • ボタンに関連付けられているキー(Key)
  • キャプションとして表示する文字列(Text)
  • ツールチップとして表示する文字列(ToolTipText)

 キャプションの文字は、キー内に表示が入りきれないと自動的に省略記号「...」が表示されます。

キーセットとツールチップの設定例
キーセットとツールチップの設定例

 スタイルセットとキーセットは、それぞれ専用のエディタを使用してデザインできます。

スタイルセットエディタ
スタイルセットエディタ
キーセットエディタ
キーセットエディタ

イベント

 FunctionKeyPressは、GcClassicFunctionKeyの中核をなすイベントで、[F1]から[F12]までのファンクションキー、[Home]、[End]、[PageUp]、[PageDown]の各キー、およびこれらのキーと制御キー([Alt]、[Ctrl]、[Shift])を組み合わせたキーを押下した時、または対応するボタンをマウスでクリックしたときに発生します。FunctionKeyPressイベントのプロシージャに任意のコードを記述することで、ファンクションキー操作時に目的の動作を実現できます。

 イベントハンドラの引数「e As GrapeCity.Win.Bars.FunctionKeyPressEventArgs」を使い、どのキーが押されたのかを識別し、キー個々の動作に処理を割り当てることができます。

 また、ShiftStateDownイベントとShiftStateUpイベントを利用することで、[Ctrl]キーなどの制御キーを押下したときに、対象となる動作を切り替えることも可能です。さらに、InteractiveMouseプロパティをFalseに設定すると、マウスによるボタンクリックを禁止し、キーボード操作のみを対象にできます。

 KeyRepeatプロパティでは、キーを押し続けている間、FunctionKeyPressイベントを繰り返し発生させるかどうかを指定できます。

次のページ
フォームのデザイン

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ComponentZine(ComponentOne)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6718 2012/08/22 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング