SHOEISHA iD

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

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

ComponentZine(PlusPak)

ファンクションキーの切り替え機能を持った.NETアプリケーションを作る

PlusPak for Windows Forms 6.0Jを使ったエディタアプリケーションの作成(2)

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

2番目のキーセットの作成

 今度は、もう1つキーセットを作成します。GcClassicFunctionKeyコントロールは、複数のキーセットを持たせることができます。このプログラムでは2つのキーセットを作成し、[Shift]または[Ctrl]キーを押すと、2種類のファンクションキーを交互に表示するようにします。

キーセットの追加と設定

 まずは、キーセットをもう1つ追加します。

  1. GcClassicFunctionKeyコントロールのタスクメニューから「キーセットを設定」を選びます。
  2. 「KeySets」コレクションエディタが表示されるので、[追加]ボタンをクリックします。もう1つキーセットが追加され、「KeySet1」という名前が付けられます。
  3. エディタにある[ボタン配列]ボタンをクリックします。「キーセット」エディタが表示されるので、先ほどと同様に「F1~F4」を残してそれ以外のキーを下のペインにドラッグ&ドロップします。
  4. 4つのボタンそれぞれに次のプロパティを設定します。
    ボタン Text ImageIndex ToolTipText
    F1 印刷 アイコンのインデックス番号 プリンタに印刷します。
    F2 開く アイコンのインデックス番号 ファイルからデータを読み込みます。
    F3 新規作成 アイコンのインデックス番号 新しい文書を作成します。
    F4 ヘルプ アイコンのインデックス番号 ヘルプを表示します。
  5. 設定したらエディタを閉じ、タスクメニューの「使用するキーセット」で「KeySet1」を選ぶと、作成したキーセットが表示されます。
    「KeySet1」のキーセットを選択すると作成したキーセットが表示される
    「KeySet1」のキーセットを選択すると作成したキーセットが表示される

2番目のスタイルの設定

 このキーセットには、最初に作成したキーセットのスタイル「ThreeDStyleSet」が適用されています。同じスタイルでは見た目も間違えそうなので、違うスタイルを作成して設定することにします。

  1. GcClassicFunctionKeyコントロールのタスクメニューから「スタイルセットを設定」を選択します。
  2. 「StyleSets」コレクションエディタで、「追加」ボタンの横にある[▼]ボタンをクリックして「PopupStyleSet」を選びます。スタイルには「PopupStyleSet1」という名前が付けられています。
  3. 次のプロパティを変更します。
    プロパティ 設定値 機能
    AlignHorizontal Center ボタン表面の文字の水平方向の位置
    BackColor 255,255,192 ボタン全体の背景色
  4. 「StyleSets」コレクションエディタを閉じてタスクメニューに戻り、「使用するスタイルセット」プロパティで「PopupStyleSet1」を選びます。これで、今設定したスタイルが適用されます。
    作成した「PopupStyleSet1」を選択すると、スタイルが適用される
    作成した「PopupStyleSet1」を選択すると、スタイルが適用される
  5. 「使用するキーセット」を「Default」に、「使用するスタイルセット」を「ThreeDStyleSet1」に戻しておきます。

キーセットの切り替えと押されたキーの処理-イベント処理

 キーセットとスタイルが2つできたので、これを切り替える処理と押されたキーの処理を作成します。これには2つのイベントを使用します。

 まず、キーセットは[Shift]または[Ctrl]キーを押下するたびに切り替わるようにします。これらのキーが押されると、GcClassicFunctionKeyコントロールには、「ShiftStateDown」というイベントが発生します。また、ファンクションキーが押されると、「FunctionKeyPress」というイベントが発生します。それぞれの処理は、これらのイベントハンドラに作成します。

キーセットの切り替え処理

 2つのキーセットを切り替える処理は、まずクラスのメンバ変数を論理型で用意し、この変数の値を使って現在のキーセットを入れ替えます。

 今回使用するキーセットでは、GcClassicFunctionKeyコントロールの「ActiveKeySet」プロパティを使用します。ここに、表示したいキーセット名を設定します。また、使用するスタイルは、ActiveStyleSetプロパティにスタイル名を設定します。

Visual Basic
Public flag As Boolean = True
Private Sub GcClassicFunctionKey1_ShiftStateDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles GcClassicFunctionKey1.ShiftStateUp
    If flag = True Then
        GcClassicFunctionKey1.ActiveKeySet = "KeySet1"
        GcClassicFunctionKey1.ActiveStyleSet = "PopupStyleSet1"
        flag = False
    Else
        GcClassicFunctionKey1.ActiveKeySet = "Default"
        GcClassicFunctionKey1.ActiveStyleSet = "ThreeDStyleSet1"
        flag = True
    End If
End Sub
C#
private Boolean flag = true;
private void gcClassicFunctionKey1_ShiftStateDown(object sender, KeyEventArgs e)
{
    if(flag == true)
    {
        gcClassicFunctionKey1.ActiveKeySet = "KeySet1";
        gcClassicFunctionKey1.ActiveStyleSet = "PopupStyleSet1";
        flag = false;
    }
    else
    {
        gcClassicFunctionKey1.ActiveKeySet = "Default";
        gcClassicFunctionKey1.ActiveStyleSet = "ThreeDStyleSet1";
        flag = true;
    }
}

押されたキーの処理

 ユーザーがいずれかのファンクションキーを押すと、GcClassicFunctionKeyコントロールには「FunctionKeyPress」イベントが発生します。どのキーが押されたのかは、イベントハンドラの引数「e」を使用します。この引数には、「FunctionKeyPressEventArgs」クラスのインスタンスが格納され、次のメンバプロパティを利用できます。

名前 説明
Alt [Alt]キーが押されたかどうかを示す値を取得します。
Control [Control]キーが押されたかどうかを示す値を取得します。
Handled イベントが処理されたかどうかを示す値を取得します。
Key 押されたボタンに対応するキーボード上のキーを取得します。
KeyIndex 押されたボタンに対応するKeyItemオブジェクトのKeySet内でのインデックスを取得します。
Modifiers 修飾子キー([Ctrl]、[Shift]、および[Alt])の中で、どのキーの組み合わせが押されたのかを示す値を取得します。
Shift [Shift]キーが押されたかどうかを示す値を取得します。

 このうち、KeyIndexプロパティを使用すると、ファンクションキーに設定したインデックス番号を取得できるので、これを使って押されたキーを識別します。

 インデックス番号は、それぞれのファンクションキーに設定されているButtonIndexプロパティの値で、KeySetsコレクションエディタで確認・設定ができます。また、2つのキーセットの各キーのインデックス番号が同じ場合は、どちらのキーセットのキーが押されたのかを「ActiveKeySet」プロパティで把握できるので、これで押されたキーの処理を振り分けます。

 ここでは、キーが押されるとStatusStripコントロールのラベルに情報を表示するようにしています。

Visual Basic
Private Sub GcClassicFunctionKey1_FunctionKeyPress(ByVal sender As System.Object, ByVal e As GrapeCity.Win.Bars.FunctionKeyPressEventArgs) Handles GcClassicFunctionKey1.FunctionKeyPress
	If Me.GcClassicFunctionKey1.ActiveKeySet = "Default" Then
        Select Case e.KeyIndex
            Case 0
                ToolStripStatusLabel1.Text = "保存しました"
            Case 1
                ToolStripStatusLabel1.Text = "データをコピーしました"
            Case 2
                ToolStripStatusLabel1.Text = "データを貼り付けました"
            Case 3
                ToolStripStatusLabel1.Text = "データを切り取りました"
        End Select

    ElseIf Me.GcClassicFunctionKey1.ActiveKeySet = "KeySet1" Then
        Select Case e.KeyIndex
            Case 0
                ToolStripStatusLabel1.Text = "印刷しました"
            Case 1
                ToolStripStatusLabel1.Text = "ファイルを開きました"
            Case 2
                ToolStripStatusLabel1.Text = "新しい文書を作成しました"
            Case 3
                ToolStripStatusLabel1.Text = "ヘルプを表示しました"
        End Select
    End If
End Sub
C#
private void gcClassicFunctionKey1_FunctionKeyPress(object sender, FunctionKeyPressEventArgs e)
{
    if(gcClassicFunctionKey1.ActiveKeySet == "Default")
    {
        switch (e.KeyIndex)
        {
            case 0:
                toolStripStatusLabel1.Text = "保存しました";
                break;
            case 1:
                toolStripStatusLabel1.Text = "データをコピーしました";
                break;
            case 2:
                toolStripStatusLabel1.Text = "データを貼り付けました";
                break;
            case 3:
                toolStripStatusLabel1.Text = "データを切り取りました";
                break;
        }
	}else if(gcClassicFunctionKey1.ActiveKeySet == "KeySet1")
    {          
        switch(e.KeyIndex)
        {
            case 0:
                toolStripStatusLabel1.Text = "印刷しました";
                break;
            case 1:
                toolStripStatusLabel1.Text = "ファイルを開きました";
                break;
            case 2:
                toolStripStatusLabel1.Text = "新しい文書を作成しました";
                break;
            case 3:
                toolStripStatusLabel1.Text = "ヘルプを表示しました";
                break;
        }
    }
}

まとめ

 MS DOS全盛の時代は、ファンクションキーを使うのが当たり前のようになっていて、Cコンパイラなどの言語アプリケーションでもコンパイルや実行などをファンクションキーで行っていましたが、OSのGUI化に伴い、あまり使われなくなってきているような気がします。ファンクションキーは、メニュー操作などのように階層状に実行したい機能を選んでいくのではなく、直接機能を実行できるので、もっとアプリケーションで活用するといいと思うのですが・・・。

 ファンクションキーは、パソコンの操作に不慣れな人でも覚えやすい操作であることに加え、GcClassicFunctionKeyコントロールは、外観上もデザイン性に優れ、複数のキーセットを切り替えて使用できるメリットがあります。ユーザーにやさしいアプリケーションの設計を考えているのであれば、一度導入を検討してみてはいかがでしょうか。

製品情報

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

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

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング