SHOEISHA iD

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

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

ComponentZine(InputMan)

Accessデータをリスト化する-その2

InputMan for Windows Forms 5.0JのGcListBoxコンポーネントを使った、カラフルリストボックスの作成

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

 本稿ではGcListBoxコンポーネントを使い、きれいなデザインのリストボックスを作成し、Accessのデータを2つのクエリを切り替えて表示するアプリケーションを作成します。

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

はじめに

 以前、このコーナーの「Accessのデータをリスト表示するアプリケーションの作成」という記事で、C1Listコンポーネントを使ってAccessのデータをリスト表示するアプリケーションの作成を紹介しました。

 今回、InputMan for Windows Formsがバージョン5.0Jになり、この中に新しいアーキテクチャを採用し、よりパワフルに生まれ変わったGcListBoxというコンポーネントが収納されています。

 このコンポーネントは、C1Listコンポーネントにくらべ項目や選択行のフォントやレイアウト、色の設定や、グラデーション効果によるスタイルの設定など、スタイルのデザインも柔軟に行えるようになりました。また、コントロールの描画にかかる速度も大幅に向上しています。

 今回は、このGcListBoxコンポーネントを使い、きれいなデザインのリストボックスを作成し、Accessのデータを2つのクエリを切り替えて表示するアプリケーションを作成します。

グラデーションによる表示設定が可能
グラデーションによる表示設定が可能
クエリを切り替えて使う
クエリを切り替えて使う

対象読者

 Visual Basic 2005またはVisual C# 2005を使ってプログラムを作ったことのある人。

必要な環境

 Visual Basic 2005またはVisual C# 2005、Visual Studio 2005でプログラムが作れる環境。

 なお、本プログラムはWindows Vista上で動作するVisual Studioを使用して作成し動作確認を行っています。

プログラム実行時の注意事項

 InputMan for Windows Forms 5.0Jを使って作成したアプリケーションを配布する場合、InputMan for Windows Forms 5.0Jのアセンブリファイルを添付する必要があります。これは、Common Language RuntimeのDLLをアプリケーションと一緒に配布するのと同じです。アプリケーションを正常に動作させるためには、次のファイルをインストールする必要があります。

  • GrapeCity.Framework.InputMan.v20.dll…フレームワークアセンブリ
  • GrapeCity.Win.Editors.V50.dll…本体コンポーネント
  • GrapeCity.Framework.InputMan.v20.resources.dll…フレームワークアセンブリのサテライトリソース
  • GrapeCity.Win.Editors.V50.resources.dll…本体コンポーネントのサテライトリソース

 これらのファイルを、プログラムを実行するフォルダに格納します。.NET Framework 2.0から追加されたクラスやメンバを使用しているので、.NET Framework 2.0がインストールされていることが必須条件です。

コンポーネントのインストール

 はじめてInputMan for Windows Forms 5.0Jを使用する方は、プロジェクトにInputMan for Windows Forms 5.0Jをインストールする必要があります。

 インストーラは、グレープシティのWebページからダウンロードできますので、ここからダウンロードしてインストールしてください。製品ページ左側の[ダウンロード]-[トライアル版]をクリックし、ダウンロード方法([FTP]または[HTTP])を選択すれば入手できます。ファイルはLZH形式で圧縮されています。

 有償のコンポーネントですが、プロダクトキーを入力せずにインストールすることで、トライアル版として使用できます。制限事項などの詳細については、インストーラに同梱されているリリースノートを参照ください。

コントロールの追加

 InputMan for Windows Forms 5.0Jをインストールしたら、ツールボックスに専用のタブを作成し、InputMan for Windows Forms 5.0Jコンポーネントを追加します。追加するコンポーネントは、「.NET Frameworkコンポーネント」の「名前空間」が「GrapeCity.Win.Editors」で始まる名前空間のコンポーネント「GcListBox」です。

「名前空間」が「GrapeCity.Win.Editorsd」で始まる名前空間のコンポーネント「GcListBox」を選択する
「名前空間」が「GrapeCity.Win.Editorsd」で始まる名前空間のコンポーネント「GcListBox」を選択する

GUIの作成

 GUIは、いたってシンプルです。[GcListBox]コンポーネントと[Label]を配置するだけです。

 データベース関係のコントロールは、[GcListBox]コンポーネントにデータベースをバインドすると作成されるコントロールです。

 また、[ToolStrip]コントロールは、複数のクエリを作成すると、自動的にフォームに追加されます。

コンポーネントの配置
コンポーネントの配置

GcListBoxコンポーネントについて

 GcListBoxコンポーネントは、C1Listコンポーネントに比べてタスクトレイの画面が変更されて、ヘッダー部やリスト部のデザインが一括と個別に設定できるようになっています。

 GcListBoxコンポーネントの各部位は、次のような名称になっています。

GcListBoxコンポーネントの各部の名称
GcListBoxコンポーネントの各部の名称
ヘッダ部

 項目のタイトルとして最上部に表示されます。デザイナで、文字の3D表示やグラデーションによる背景色の塗りつぶしなどが行えます。

 ヘッダー部は、プログラム実行時にマウスで表示幅の変更や項目のソートを行うことができます(ただしデータベースをバインドするとソートはできません)。

リストボックス部

 リストの項目を表示する領域で、カラムを複数列で表示できます。デザイナでは、各項目の幅やフォントの指定、グラデーションによる背景色の塗りつぶしなどが行えます。

スクロールバー

 全カラムの幅の合計がコントロールよりも大きい場合や、リストの項目が多い場合などに水平・垂直にスクロールバーを自動的に表示できます。

ステータスバー

 コントロールの最下部に表示され、テキストで情報を表示できます。

チェックボックス

 リストの先頭(左端)に表示できます。デフォルトは非表示になっています。リストの選択時、チェックボックスにチェックを付ける形で選択させることができます。

データベースのバインド

 データベースのバインドは、従来から変わっておらずウィザードで簡単に設定できます。

 今回は、Accessのデータベース「winelist.mdb」を使います。

1

 タスクトレイの「データバインド項目を使用する」をクリックすると「データソース」が表示されるので、「プロジェクトデータソースの追加」をクリックします。

 
2

 後は、ウィザードに従って、データベース「winelist.mdb」を指定していきます。

 
3

 使用するデータベースオブジェクトで、テーブル「銘柄データ」を指定します。ここでは、すべてのフィールドを選びます。

 
4

 「完了」ボタンを押すと、選択したフィールドがGcListBoxコンポーネントに反映され、3つのデータベースオブジェクトが作成されます。

 
5

 また、フォームのLoadイベントハンドラに、クエリを実行する次のコードが追加されます(読みやすいように整形しています)。

Visual Basic
Private Sub Form1_Load(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles MyBase.Load
    'TODO: このコード行はデータを 
    ''WinelistDataSet.銘柄データ' テーブルに読み込みます。
    '必要に応じて移動、または削除をしてください。
    銘柄データTableAdapter.Fill(Me.WinelistDataSet.銘柄データ)
End Sub
C#
private void Form1_Load(object sender, EventArgs e)
{
    // TODO: このコード行はデータを 
    // 'winelistDataSet.銘柄データ' テーブルに読み込みます。
    // 必要に応じて移動、または削除をしてください。
    this.銘柄データTableAdapter.Fill(this.winelistDataSet.銘柄データ);
}

デザイナを使ってデザインする

 今度は、リストボックスをデザインします。「カラム」と「リスト項目」部に分けてデザインしていきます。

カラムの編集

 タスクトレイの「カラムの既定値を設定」を選ぶと、ヘッダー部を一括してデザインできます。

 ここでは、文字を3Dのくぼんだ文字にし、背景をグラデーションで塗りつぶします。

1

 「カラムの既定値の設定」ダイアログの左ペインにある「Header」をクリックし展開します。

2

 「TextEffect」プロパティで、文字の3D表示を設定します。ここでは「InsetLite」を選び窪んだ文字にします。

 
3

 「GradientEffect」プロパティをクリックし、「グラデーション効果の設定」ダイアログで、グラデーションによる塗りつぶしを指定します。ここでは、色と方向が指定できます。

「グラデーション効果の設定」ダイアログ
「グラデーション効果の設定」ダイアログ
4

 今度は、個々の列をデザインします。列「ID」は不要なので削除し、「銘柄」の列幅を広げます。

 一度デザイナを閉じ、タスクトレイから「カラムの編集」を選びます。

 
5

 各カラムがオブジェクトとして並んでいます。「listColumn1」が列「ID」を表すオブジェクトなので、これを削除します。

 また、「listColumn2」が列「銘柄」なので、このWidthプロパティを200にします。

リスト項目のデザイン

 続いて、リスト項目の部分をデザインします。ここも、一括デザインと個別デザインができるようになっています。

1

 リスト項目の一括デザインは、タスクトレイの「項目スタイルの初期値を設定」を選ぶと設定用のダイアログが開きます。

 スタイルは、1つのオブジェクトとして設定しますので、「追加」ボタンを押して各プロパティを指定します。各リスト項目の高さを設定するには、「Height」プロパティを使います。デフォルトでは「AutoItemHeight」プロパティがTrueになっているので、高さを変える場合はこのプロパティをFalseにしてから、「Height」プロパティを設定します。

2

 背景をグラデーションで塗りつぶす場合は、「GradientEffect」プロパティを使います。設定方法はカラムと一緒です。

 
3

 OKボタンを押すと、すべての列に設定が適用されます。

クエリの追加

 今度は、「年代」で並び変えたクエリを追加で作成し、最初に作成したクエリと切り替えて使用できるようにします。

新しいクエリの追加

 クエリを追加するには、BindingSourceオブジェクトのタスクトレイから「クエリの追加」を選びます。「検索条件」ビルダが起動しますので、クエリに名前を付け、クエリビルダを使って新しいクエリを作成します。

 

 自動的に、ToolStripコントロールがフォームに追加され、追加したクエリを実行するボタンが表示されます。

 

 また、このボタンのClickイベントハンドラに、クエリを実行するコードが組み込まれます(以下、読みやすいように整形しています)。

Visual Basic
Private Sub SortYearToolStripButton_Click(ByVal sender As _ 
    System.Object, ByVal e As System.EventArgs) _
       Handles SortYearToolStripButton.Click
    Try
        Me.銘柄データTableAdapter.SortYear( _
            Me.WinelistDataSet.銘柄データ)
    Catch ex As System.Exception
        System.Windows.Forms.MessageBox.Show(ex.Message)
    End Try
End Sub
C#
private void sortYearToolStripButton_Click(object sender, EventArgs e)
{
    try
    {
        this.銘柄データTableAdapter.SortYear(
                          this.winelistDataSet.銘柄データ);
    }
    catch (System.Exception ex)
    {
        System.Windows.Forms.MessageBox.Show(ex.Message);
    }

}

最初のクエリの実行

 年代によるソートを元に戻すために、ToolStripコントロールにラベルを追加して、最初に作成したクエリを実行できるようにします。また、年代によるソートのボタンの名前も変えておきます。

 最初に作成したクエリを実行するには、TableAdapterオブジェクトの実行メソッド名を、フォームのLoadイベントハンドラで実行したメソッド名「Fill」に変えるだけです。

Visual Basic
Private Sub ToolStripLabel1_Click(ByVal sender As System.Object, _
           ByVal e As System.EventArgs) Handles ToolStripLabel1.Click
Try
        Me.銘柄データTableAdapter.Fill(Me.WinelistDataSet.銘柄データ)
    Catch ex As System.Exception
        System.Windows.Forms.MessageBox.Show(ex.Message)
    End Try
End Sub
C#
private void toolStripButton1_Click(object sender, EventArgs e)
{
    try
    {
        this.銘柄データTableAdapter.Fill(
            this.winelistDataSet.銘柄データ);
    }
    catch (System.Exception ex)
    {
        System.Windows.Forms.MessageBox.Show(ex.Message);
    }
}

まとめ

 見た目もカラフルなリストボックスは、使っていても楽しいものです。

 VS標準のリストボックスではできない機能をまだまだ持っているGcListBoxコンポーネントは、質を問われる時代になったアプリケーション開発にもってこいのコンポーネントです。

 

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

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2457 2009/03/17 12:05

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング