SHOEISHA iD

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

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

現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(InputMan)(AD)

InputManの表現力をWebに!
「InputMan for ASP.NET」徹底解説

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

ダウンロード サンプルソース (21.2 KB)

Webアプリケーションでファンクションキーを使用可能に

 汎用機に載ったシステムをWindowsに移植する際に、必ずと言っていいほど要望が挙がってくるのが、ファンクションキー対応です。Webアプリケーションとして実現する場合にも同じような要望が上がって来る事が時々あり、その実現方法や代替手段の検討に時間がかかってしまうことも稀ではありません。そうしたときに便利なコントロールが、InputMan for ASP.NETのFunctionKeyコントロールです。

 FunctionKeyコントロールでは、ファンクションキーが押下されたときに、WebサーバまでPostBackさせてASP.NETのイベントとして処理するのか、それともWebブラウザ側で検出してJavaScriptで処理するのかが選択できます。

図10 ファンクションキー対応
図10 ファンクションキー対応

サーバイベントとして処理する場合

 サーバイベントとして処理するには、AutoPostBackプロパティをTrueにします。また、AJAX ExtentionsのUpdatePanelの中にFunctionKeyコントロールを配置すると、ページの再読み込みが発生しないので便利です。

リスト1 FunctionKeyDownイベント
Imports GrapeCity.Web.Input

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub FK_FunctionKeyDown(ByVal sender As Object, _
                                     ByVal e As IMFunctionKey.FunctionKeyEventArgs) _
                                     Handles Server_FunctionKey.FunctionKeyDown
        Me.MsgBox.Show(e.FunctionKey.ToString, _
                       GrapeCity.Web.Input.Core.DialogType.Alert)
        Me.Label1.Text = e.FunctionKey.ToString
    End Sub
End Class

サーバ側からWebブラウザ側にメッセージボックスを表示

 リスト1のサンプルコードの中では、InputMan for ASP.NETのMessageBoxコントロールを使って、ASP.NET側からの指示でWebブラウザが稼働しているマシン上にメッセージボックスを表示します。WindowsフォームでMessageBoxを使うのと同じ感覚で実現できるので、非常に便利な機能だと思います。

クライアントイベントとして処理する場合

 クライアントイベントとして処理するには、FunctionKeyコントロールを貼ったaspxファイルにリスト2のようなクライアント側コードを記述して、Webブラウザ上でFunctionKeyDownイベントを検出したときに実行するようにします。

リスト2 クライアント側FunctionKeyDownスクリプト
<head runat="server">
    <title>InputMan for ASP.NET FunctionKeyサンプル</title>
    <script language="javascript" type="text/javascript" id="FunctionKey1_Script0">
        function FunctionKey1_FunctionKeyDown(oFunctionKey, eArgs) {
            var keyname = "";
            switch (eArgs.FunctionKey) {
                case FunctionKeys.Alt | FunctionKeys.F3:
                    keyname = "F3, Alt";
                    break;
                case FunctionKeys.F5:
                    keyname = "F5";
                    break;
                default:
            }
            document.getElementById("Label2").innerHTML = keyname;
            alert("クライアント側FunctionKeyDownイベント : " + 
                  keyname + "キーが押されました。");
        }
    </script>
    <link href="CZ0908.css" rel="stylesheet" type="text/css" />
</head>

Silverlightカレンダーコントロール

 InputMan for ASP.NETには、ASP.NETコントロールの「Calendarコントロール」とSilvelight2を使った「RichCalendarコントロール」の2種類のカレンダーが付属しています。

 どちらも和暦表示に対応しており、六曜なども表示できます。また、標準コントロールと比べると、月の移動などはWebブラウザ側だけで行うなど、操作したときの反応もよくなっています。

図11 InputMan for ASP.NETの2種類のカレンダー
図11 InputMan for ASP.NETの2種類のカレンダー

 InputMan for ASP.NETのCalendarコントロールとRichCalendarコントロールの相違点は、RichCalendarコントロールが内部的にSilverlight2を使って表現力をアップさせている点に尽きます。しかも、Silverlightを使っていることを意識しない点も素晴らしいと思います。もしかしたら、これからのWebフォームの市販コントロールの流行は、Silverlightを意識させずに組み込む方向に進むのかもしれません。

まとめ

 Visual Basic 2.0の頃に登場したInputManは、VBX→ActiveXコントロール→.NETコントロールと最新開発環境下で、標準コントロールよりも表現力豊かで生産性の高いコンポーネントとして進化してきました。今回とりあげたInputMan for ASP.NETも、そうしたInputManの直系家族であり、標準のASP.NETコントロールよりも表現力豊かで生産性の高いコンポーネントです。

 最終的にはDHTMLに変換されWebブラウザ上で動作するので、私も初めは「同じようなJavaScriptを自分で書けばいいのでは?」といった印象もありましたが、実際使ってみるとその便利さ、IEだけではなくFirefoxでも主要機能は問題なく動作するマルチブラウザ対応具合、動作も想像より軽い、ということに驚かされ、もう手放せないコンポーネントの1つとなってしまいました。

 グレープシティの市販コンポーネントを使ったことがある人には、若干なじみの薄いサーバライセンスというライセンス体系ではありますが、採用検討を一考する価値がある一品であると思います。

製品情報

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

  • このエントリーをはてなブックマークに追加
現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(InputMan)連載記事一覧

もっと読む

この記事の著者

初音玲(ハツネアキラ)

 国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。 個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。 Microsoft MVP for Windows Development ブログ:http://hatsune.hatenablog.jp/

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

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4282 2009/09/02 16:19

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング