CodeZine(コードジン)

特集ページ一覧

ドロップダウン表示したグリッドコントロールを使ってデータ入力する.NETアプリケーションの作成

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

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2012/11/30 14:00

 「PlusPak for Windows Forms 6.0J」のGcComboFrameコントロールを使って、SQLサーバ上のデータをドロップダウンウィンドウに表示し、任意のレコードを選ぶだけでデータ入力できるアプリケーションを作成してみます。

ボタンをクリックするとデータベースデータを表示するFlexGridコントロールがドロップダウンする
ボタンをクリックするとデータベースデータを表示するFlexGridコントロールがドロップダウンする
入力したいデータのあるセルをクリックするだけで入力できる
入力したいデータのあるセルをクリックするだけで入力できる
グリッドデータは列ごとにソートできボタンの横にも表示できる
グリッドデータは列ごとにソートできボタンの横にも表示できる

はじめに

 狭いフォームを有効活用するコントロールは多くありますが、「PlusPak for Windows Forms 6.0J」のGcComboFrameコントロールは、独自のドロップダウンウィンドウを構築することで、少ない面積で柔軟性の高い入力を実現するコントロールです。

 コンテントパネルには好きなコントロールを配置し、ドロップダウンウィンドウに組み込んだコントロールと連動して動作させることで、必要な時だけウィンドウをドロップダウン表示し、入力補助機能として使用することができます。

 そこで今回は、SQL Serverのデータベースに連結したFlexGridコントロールをドロップダウンウィンドウに組み込み、グリッドデータをクリックするだけで必要なデータを入力することができるアプリケーションを作成してみました。

対象読者

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

必要な環境

 Visual Basic 2005/2008/2010、Visual C# 2005/2008/2010、Visual Studio 2005/2008/2010のいずれかでプログラムが作れる環境。

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

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

 本プログラムは、「PowerTools ComponentOne Studio 2012J」および「PlusPak for Windows Forms 6.0J」を使用して作成しています。そのため、アプリケーションを配布する場合は、「PowerTools ComponentOne Studio 2012J」と「PlusPak for Windows Forms 6.0J」のアセンブリファイルを添付する必要があります。これは、Common Language RuntimeのDLLをアプリケーションと一緒に配布するのと同じです。

 本記事のサンプルアプリケーションを正常に動作させるためには、次のファイルをインストールする必要があります。

サンプルファイルの実行に必要なファイル(※は.NET Framework 4でのみ利用可)
ファイル名 説明
C1.Win.C1FlexGrid.2.dll 本体アセンブリ
C1.Win.C1FlexGrid.4.dll 本体アセンブリ(※)
GrapeCity.Win.PlusPak.v60.dll 本体アセンブリ
GrapeCity.Framework.PlusPak.v21.dll 製品フレームワーク

 このファイルを、プログラムを実行するフォルダに格納します。

 .NET Framework 2.0から追加されたクラスやメンバを使用しているので、.NET Framework 2.0以上のバージョンの.NET Frameworkがインストールされていることが必須条件です。

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

 「PowerTools ComponentOne Studio 2012J」および「PlusPak for Windows Forms 6.0J」を使用する方は、Visual Studio、Visual Basic、Visual C#の開発環境に、「PowerTools ComponentOne Studio 2012J」と「PlusPak for Windows Forms 6.0J」をインストールする必要があります。

 インストーラは、グレープシティのWebページからダウンロードできます。

 ダウンロードしたい製品にチェックを付け[申込フォーム]ボタンを押すと、「トライアル版申込フォーム」ページに移動しますので、「個人情報の収集および使用に同意する」にチェックを入れ「同意する」ボタンをクリックします。

 トライアル申込フォームが表示されますので、必要情報を登録すると添付トライアルライセンスキーファイルとダウンロードサイトを記載したE-Mailが送られてきます。ここからダウンロードします。ダウンロードファイルは圧縮ファイルになっていますので、解凍してインストーラを起動します。

 制限事項などの詳細については、インストーラに同梱されているリリースノートを参照ください。

コントロール/コンポーネントの追加

 「PowerTools ComponentOne Studio 2012J」および「PlusPak for Windows Forms 6.0J」をインストールしたら、プロジェクトにコントロール/コンポーネントを追加します。

 ツールボックスに専用のタブを作成し、使用するコンポーネント/コンポーネントを追加します。追加対象はアセンブリ名が「C1.Win.C1FlexGrid.4」の「C1FlexGrid」コントロールと、「GrapeCity.Win.PlusPak.v60」の「GcComboFrame」「GcBalloonTip」コンポーネントです。

コントロール/コンポーネント アセンブリ
C1FlexGrid C1.Win.C1FlexGrid.4
GcComboFrame GrapeCity.Win.PlusPak.v60
GcBalloonTip GrapeCity.Win.PlusPak.v60
アセンブリ名が「C1.Win.C1FlexGrid.4」の「C1FlexGrid」コントロール
アセンブリ名が「C1.Win.C1FlexGrid.4」の「C1FlexGrid」コントロール
アセンブリ名が「GrapeCity.Win.PlusPak.v60」の「GcComboFrame」「GcBalloonTip」コンポーネント
アセンブリ名が「GrapeCity.Win.PlusPak.v60」の「GcComboFrame」「GcBalloonTip」コンポーネント

GcComboFrameコントロールについて

 GcComboFrameコントロールの概要については、過去の記事『独自のドロップダウンウィンドウを持った.NETアプリケーションの作成』で紹介していますので、そちらを参照してください。

 この時の記事のサンプルアプリケーションは入力に電卓コントロールを使いましたが、今回はデータベースのデータをグリッドで表示し、必要なデータのあるセルをクリックするだけで入力できるアプリケーションを作成しています。

 そのため、GcComboFrameコントロールのコンテントパネルにLabelとNumericUpDownコントロールを配置し、ドロップダウンウィンドウにC1FlexGridコントロールを配置して使用します。

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

 GcBalloonTipコンポーネントは、過去の記事『カスタムバルーンチップを持った.NETアプリケーションを作る』で使用していますが、バージョンが1つ前のものであることと、GcBalloonTipコンポーネントについて詳しく触れていませんので、補足を含めて概要を紹介しておきます。

GcBalloonTipコンポーネントの概要

 GcBalloonTipコンポーネントは、フォーム上に配置されたコントロールにバルーンチップを表示できるようにする拡張コンポーネントです。

 標準コンポーネントのToolTipコンポーネントに比べ豊富なデザイン機能を持ち、表示位置の指定や背景色のグラデーション設定、バルーン内へのコントロールの追加機能など、単なるTips表示にとどまらず多彩な用途に使用できるコンポーネントです。

 そして、専用のデザイナを持ち、以下のプロパティを操作することで外観の装飾や動作を設定することができます。

プロパティ 説明
BackColor バルーンチップの背景色
Caption バルーンチップのキャプション
CaptionFont キャプションのフォント
CaptionCoreColor キャプションの色
Delay 自動的に閉じるまでの時間
GradientEffect バルーンチップの背景のグラデーション
IconType バルーンチップに表示するアイコンの種類
MaxHeight バルーンチップの高さの上限
MaxWidth バルーンチップの幅の上限
Shape バルーンチップの形
ShowCloseButton 閉じるボタンを表示するかどうか
Text バルーンチップに表示するテキスト
TextFont テキストのフォント
TextForeColor テキストの色
UseVisualStyleBackColor 視覚スタイルがサポートされている場合、
視覚スタイルを使用して背景を描画するかどうか

 GcBalloonTipコンポーネントをフォームに配置するとフォーム上の各コントロールのプロパティウィンドウに「GcBalloonTip1のBalloonTipInfo」プロパティが追加されます。

 そして、右側に表示されるボタンをクリックすると、バルーンチップの設定を行うバルーンチップエディタが表示されます。

 このエディタを使用して、コントロールごとにToolTipを設定します。

プロパティウィンドウに「GcBalloonTip1のBalloonTipInfo」プロパティが追加される
プロパティウィンドウに「GcBalloonTip1のBalloonTipInfo」プロパティが追加される
バルーンチップエディタ
バルーンチップエディタ

 背景色の変更やグラデーションを設定する場合は、「UseVisualStyleBackColor」を「False」に設定してから行います。また、バルーンにはキャプションとメッセージの2つを設定します。

 バルーンを使えるようにするには、Showメソッドを実行します。

 どのタイミングでバルーンを表示するのかは、各コントロールのイベントで決めます。そして、そのイベントハンドラでShowメソッドを実行します。

 例えば、Buttonコントロールにマウスポインタが重なった時にバルーンを表示したければ、MouseHoverイベントハンドラでShowメソッドを実行するコードを記述します。

 Showメソッドはオーバーロードされており、引数はメソッドごとに違いますが、一番簡単な書式のShowメソッドでは、引数にバルーンを表示させるコントロール名を指定します。

 次のコードは、Buttonコントロールにマウスポインタが重なった時に、Buttonコントロールの上にバルーンを表示させます。

Visual Basic
Private Sub Button1_MouseHover(sender As System.Object, e As System.EventArgs) Handles Button1.MouseHover
    GcBalloonTip1.Show(Button1)
End Sub
C#
private void button1_MouseHover(object sender, EventArgs e)
{
    gcBalloonTip1.Show(button1);
}
Showメソッド オーバーロード一覧
 Show(Point, BalloonTipInformation)
 Show(Control)
 Show(Control, TipPosition)
 Show(Control, TipPosition, BalloonTipInformation)
 Show(Control, Rectangle, BalloonTipInformation)
 Show(Control, Rectangle, TipPosition, BalloonTipInformation)

 Showメソッドのパラメータの一つ「TipPosition」を使って、バルーンチップの表示位置を設定することができます。設定値はTipPosition列挙のメンバです。

バルーンの表示位置(ヘルプより抜粋)
バルーンの表示位置(ヘルプより抜粋)
TipPosition列挙のメンバ
メンバ名 説明
0 - TopLeft コントロールの左上端を示します。
1 - TopCenter コントロールの中央上端を示します。
2 - TopRight コントロールの右上端を示します。
3 - BottomLeft コントロールの左下端を示します。
4 - BottomCenter コントロールの中央下端を示します。
5 - BottomRight コントロールの右下端を示します。

 また、Showメソッドのパラメータ「control」と「rectangle」を使って、グリッドコントロール内の特定のセルにバルーンチップを表示することが可能です。

グリッドの特定のセルにバルーンを表示できる(ヘルプより抜粋)
グリッドの特定のセルにバルーンを表示できる(ヘルプより抜粋)

 バルーンチップのウィンドウの中にはコントロールを追加して独自のバルーンチップを作ることができます。その際のコントロールの配置は、バルーンチップ内のテキストの下側に配置することができます。

 バルーンチップの大きさは追加されたコントロールのサイズによって自動的にサイズが調整されます。バルーンチップが表示可能なサイズの上限はMaxWidthとMaxHeightプロパティで設定でき、デフォルトでは、幅(MaxWidth)は600ピクセルで、高さ(MaxHeight)には制限は設定されていません。貼り付けたコントロールのサイズが大きくバルーンチップ内に表示しきれない場合は、スクロールバーが表示されます。

コントロールの配置位置と配置例(ヘルプより抜粋)
コントロールの配置位置と配置例(ヘルプより抜粋)

GUIのデザイン

 では、さっそくプログラムを作成しましょう。

 作成するプログラムは、SQL Server(2008 R2)で作成したサンプルデータベース「仕入れ商品一覧_Data.mdf」から、テーブル「製品リスト」にあるデータをすべて取出し、C1FlexGridコントロールで表示します。そして、このC1FlexGridコントロールをGcComboFrameコントロールに連結させ、ドロップダウンウィンドウで表示するようにします。

 GcComboFrameコントロールは、LabelコントロールとNumericUpDownコントロールをコンテントパネルに組み込み、C1FlexGridコントロールで選択された行データをLabelコントロールで表示します。

 データを表示するタイミングは、C1FlexGridコントロールの任意の行のセルがクリックされた時点で、処理はこのコントロールのClickイベントハンドラで行います。

 GcComboFrameコントロールは全部で5セット作成し、5つのデータを表示できるようにしますが、最初のGcComboFrameコントロールだけ有効にし、残りの4つは無効にしておきます。 上から順番にグリッドでデータが選択され表示された時点で、次のGcComboFrameコントロールを有効にします。

 また、C1FlexGridコントロールはGcComboFrameコントロール1つにつき1つ用意する必要がありますので、C1FlexGridコントロールも5つ用意します。これらのコントロールは、1つ作成したらコピーアンドペーストで複製を作成して使用するようにします。

サンプルデータベース「仕入れ商品一覧_Data.mdf」のデータ
サンプルデータベース「仕入れ商品一覧_Data.mdf」のデータ

フォームのデザイン

 フォームには、C1FlexGridコントロール、GcComboFrameコントロール、GcBalloonTipコンポーネントとGroupBoxコントロールを使用します。GcComboFrameコントロールには、5つのLabelコントロールと1つのNumericUpDownコントロールを組み込みます。

 C1FlexGridコントロールは、今回はフォームデザイン時からデータベースを組み込み、すべてのフィールドデータを表示するように設定します。各コントロールの設定は、作成手順の中で説明します。

フォームのレイアウト
フォームのレイアウト

C1FlexGridコントロールの作成

 最初に、C1FlexGridコントロールを作成します。というのも、C1FlexGridコントロールをGcComboFrameコントロールに連結すると、C1FlexGridコントロールは非表示になってしまい、この後の編集操作が少しやりづらくなってしまうためです。

 C1FlexGridコントロールには、SQL Serverで作成したデータベース「仕入れ商品一覧_Data.mdf」を連結し、テーブル「製品リスト」にあるデータをすべて取出し表示します。

 また、グリッドでクリックされたデータを取り出す処理を作成するため、Clickイベントハンドラも作成します。

 そして、作成したC1FlexGridコントロールをコピーし、全部で5つ作成します。

 (1)まずはGroupBoxコントロールを1つ配置し、GcComboFrameコントロールを配置する場所を確保しておきます。なお、ここではフォームの背景色を「BlanchedAlmond」に変更しています。

 (2)ツールボックスからC1FlexGridコントロールをフォームにドラッグアンドドロップします。そして、Sizeプロパティの値を「660,230」にしておきます。これは、あとでGcComboFrameコントロールのドロップダウンウィンドウを表示する時に、グリッドのすべてのフィールドデータが表示されるサイズにしています。

 (3)C1FlexGridコントロールのスマートタグから、「データソース-プロジェクトデータソースの追加」を選びます。

「データソース-プロジェクトデータソースの追加」を選ぶ
 「データソース-プロジェクトデータソースの追加」を選ぶ

 (4)データソース構成ウィザードが起動しますので、「データベース」を選び「次へ」ボタンをクリックします。

 (5)「データセット」を選び「次へ」ボタンをクリックします。

 (6)「新しい接続」ボタンをクリックし、「データソース」を「Microsoft SQL Serverデータベースファイル」に変更します。そして、「データベースファイル名」の「参照」ボタンをクリックし、データベース「仕入れ商品一覧_Data.mdf」を選択します。

「データソース」を「Microsoft SQL Serverデータベースファイル」に変更し
「仕入れ商品一覧_Data.mdf」を選択
「データソース」を「Microsoft SQL Serverデータベースファイル」に変更し「仕入れ商品一覧_Data.mdf」を選択

 (7)「サーバにログオンする」で「Windows認証を使用する」が選ばれていることを確認し、「テスト接続」ボタンをクリックして接続に成功することを確認します。

テスト接続に成功することを確認
テスト接続に成功することを確認

 (8)OKボタンをクリックし「次へ」ボタンをクリックします。プロジェクトにデータファイルをコピーするかどうかを聞いてきますので、そのまま「はい」ボタンをクリックします。そして、「次へ」ボタンをクリックします。

 (9)「データベースオブジェクトの選択」ページに移りますので、「テーブル-製品リスト」をクリックし、「完了」ボタンをクリックします。

「テーブル-製品リスト」をクリックし、「完了」ボタンをクリック
「テーブル-製品リスト」をクリックし、「完了」ボタンをクリック

 (10)再度C1FlexGridコントロールのスマートタグを表示し「データのプレビュー」を選びます。そして、「データのプレビュー」ウィンドウで「プレビュー」ボタンをクリックし、データベースのデータが表示されることを確認します。

スマートタグを表示し「データのプレビュー」を選ぶ
スマートタグを表示し「データのプレビュー」を選ぶ
データベースのデータが表示されることを確認する
データベースのデータが表示されることを確認する

 (11)C1FlexGridコントロールのプロパティウィンドウで「AutoResize」プロパティを「True」にします。これで、グリッドの各列幅はセルの内容に自動的に調節されます。ここでプログラムを実行し、データベースファイルのデータがグリッドに表示されることを確認します。

データベースファイルのデータがグリッドに表示されることを確認する
データベースファイルのデータがグリッドに表示されることを確認する

 (12)作成したC1FlexGridコントロールを4つコピーします。設定したデータベースの連結は、コピーしたC1FlexGridコントロールにもそのまま受け継がれます。

 (13)作成したすべてのC1FlexGridコントロールのClickイベントハンドラを作成します。

GcComboFrameコントロールの作成

 続いて、GcComboFrameコントロールを作成します。

 (1)すでにGroupBoxコントロールを配置してあるので、その中にGcComboFrameコントロールを配置します。

 (2)Labelコントロールを6つ配置し、列見出しを作成します。そして、GcComboFrameコントロールのコンテンツエリアに、Labelコントロールを5つ、NumericUpDownコントロールを1つ配置します。Labelコントロールは、Textプロパティの値を削除し、BorderStyleプロパティを「Fixed3D」に、BackColorプロパティを「White」にします。

LabelコントロールとNumericUpDownコントロールを配置する
LabelコントロールとNumericUpDownコントロールを配置する

 (3)GcComboFrameコントロールのプロパティウィンドウで「DropDownSettings」プロパティを展開し、「AutoSize」プロパティを「True」にします。これで、ドロップダウンウィンドウのサイズがC1FlexGridコントロールのサイズに合わせられます。

 (4)作成したGcComboFrameコントロールを4つコピーし、GroupBoxコントロール内に均等に並べます。

 なお、GcComboFrameコントロールをコピーすると、中に組み込んだLabelコントロールのオブジェクト名(Name)が右から連番で自動的に付与されていきます。なので、これを左から連番になるように修正しておいてください(あとでコードでデータを転送する際に混乱しないようにするためです)。

コピー直後のLabelコントロールの並び順: Label16  Label15  Label14  Label13  Label12
修正後の並び順: Label12  Label13  Label14  Label15  Label16 

 (5)最初に作成したGcComboFrameコントロールのスマートタグを開き、「ドロップダウンコントロール」のリストから「C1FlexGrid1」を選びます。

 これで、C1FlexGridコントロールはGcComboFrameコントロールに連結し、ドロップダウンウィンドウで表示されるようになります。そして、フォームにあった「C1FlexGrid1」コントロールは非表示になります。

 C1FlexGrid1コントロールにアクセスするには、Visual Studioのプロパティウィンドウの上部にあるコンボボックスを開いてC1FlexGrid1を選択します。

「ドロップダウンコントロール」のリストから「C1FlexGrid1」を選ぶ
「ドロップダウンコントロール」のリストから「C1FlexGrid1」を選ぶ

 (6)同様の手順で、順番にGcComboFrameコントロールの「ドロップダウンコントロール」にC1FlexGridコントロールを組み込んでいきます。

 組み込んだらプログラムを実行させ、GcComboFrameコントロールのドロップダウンボタンをクリックしてC1FlexGridコントロールが表示されるのを確認します。

GcComboFrameコントロールのドロップダウンボタンをクリックして
C1FlexGridコントロールが表示されるのを確認する
GcComboFrameコントロールのドロップダウンボタンをクリックしてC1FlexGrid1コントロールが表示されるのを確認する

 (7)最後のGcComboFrameコントロールだけ、ドロップダウンウィンドウをコントロールの右側に表示するようにします。GcComboFrameコントロール(GcComboFrame5)のスマートタグを開き、「ドロップダウンの方向」のリストから「Right」を選びます。これで、このコントロールだけドロップダウンウィンドウはコントロールの右横に表示されます。

「ドロップダウンの方向」のリストから「Right」を選ぶ
「ドロップダウンの方向」のリストから「Right」を選ぶ
ドロップダウンウィンドウはコントロールの右横に表示される
ドロップダウンウィンドウはコントロールの右横に表示される

 (8)バルーンチップ表示のために、すべてのGcComboFrameコントロールのMouseHoverイベントハンドラを作成します。

 (9)そして、最初のGcComboFrameコントロール以外は、Enabledプロパティを「False」に設定し無効にしておきます。

バルーンチップの作成

 フォームにボタンを1つ作成し、GcComboFrameコントロールとButtonコントロールにバルーンチップを設定します。

 (1)フォームにButtonコントロールを配置し、Textプロパティを「発注依頼書作成」に変更します。そして、「MouseHover」「Click」の2つのイベントハンドラを作成します。

 (2)ツールボックスからGcBalloonTipコンポーネントをフォームにドラッグアンドドロップします。

 (3)今作成したButtonコントロールのプロパティウィンドウに、「GcBalloonTip1のBalloonTipInfo」プロパティが追加されています。ボタンのスマートタグを開くと、「GcBalloonTip1により追加するバルーンチップ」というメニューが追加されているのでこれをクリックします。

「GcBalloonTip1により追加するバルーンチップ」メニューをクリック
「GcBalloonTip1により追加するバルーンチップ」メニューをクリック

 (4)「バルーンチップエディタ」が表示されますので、次のプロパティを設定しバルーンチップを作成します。

プロパティ     設定値
Delay 1000
Caption 発注依頼書の発行
GradientEffect Direction Side
EndColor DarkSalmon
StartColor Red
Style DiagonalUp
IconType Exclamation
Text 今回はメッセージの表示のみ動作します
TextFontColor Black
UseVisibleStyleBackColor False

 これで、図のようなバルーンチップができ上がります。

エディタの設定と作成したバルーンチップ
エディタの設定と作成したバルーンチップ

 (5)GcComboFrameコントロール「GcComboFrame1」を選択し、同じくスマートタグの「GcBalloonTip1により追加するバルーンチップ」メニューをクリックします。そして、バルーンチップエディタで、次のプロパティを設定しバルーンチップを作成します。

プロパティ     設定値
Delay 1000
Caption 商品選択
GradientEffect Direction Side
EndColor PaleTurquoise
StartColor SkyBlue
Style DiagonalUp
Text ボタンをクリックすると商品を選ぶことができます
TextFontColor Blue
UseVisibleStyleBackColor False
エディタの設定と作成したバルーンチップ
エディタの設定と作成したバルーンチップ

 (6)同じ操作を残りのGcComboFrameコントロールに対して行います。

グリッドのデータ転送とバルーンチップの表示処理

 グリッドのデータをクリックすると、GcComboFrameコントロールのLabelコントロールに転送する処理と、バルーンチップを表示する処理を作成します。

 なお、フォームのLoadイベントハンドラは、C1FlexGrid1コントロールにデータベースを連結した時に自動的に作成されたコードが記述されています。

グリッドのデータ転送処理

 この処理は、C1FlexGridコントロールのClickイベントハンドラに作成します。

 グリッドのセルがクリックされると、Rowプロパティにその行番号が格納されますので、そのまま行番号と列番号を指定して、セルの値をGcComboFrameコントロールに配置したLabelコントロールのTextプロパティに順番に代入していきます。

 C1FlexGrid1からC1FlexGrid4までは、最初のLabelコントロールに値が代入された時点で、次のGcComboFrameコントロールを有効にする処理を組み込みます。

 これで、グリッドのセルをどれか1つクリックすれば、その行のデータがすべてLabelコントロールに転送されます。

Visual Basic
Private Sub C1FlexGrid1_Click(sender As System.Object, e As System.EventArgs) Handles C1FlexGrid1.Click
    Dim i As Integer = C1FlexGrid1.Row

    Label7.Text = C1FlexGrid1(i, 2).ToString()
    Label8.Text = C1FlexGrid1(i, 3).ToString()
    Label9.Text = C1FlexGrid1(i, 4).ToString()
    Label10.Text = C1FlexGrid1(i, 5).ToString()
    Label11.Text = C1FlexGrid1(i, 6).ToString()

    If Label7.Text <> "" Then
        GcComboFrame2.Enabled = True
    End If
End Sub

Private Sub C1FlexGrid2_Click(sender As System.Object, e As System.EventArgs) Handles C1FlexGrid2.Click
    Dim i As Integer = C1FlexGrid1.Row

    Label12.Text = C1FlexGrid1(i, 2).ToString()
    Label13.Text = C1FlexGrid1(i, 3).ToString()
    Label14.Text = C1FlexGrid1(i, 4).ToString()
    Label15.Text = C1FlexGrid1(i, 5).ToString()
    Label16.Text = C1FlexGrid1(i, 6).ToString()

    If Label12.Text <> "" Then
        GcComboFrame3.Enabled = True
    End If
End Sub

Private Sub C1FlexGrid3_Click(sender As System.Object, e As System.EventArgs) Handles C1FlexGrid3.Click
    Dim i As Integer = C1FlexGrid1.Row

    Label17.Text = C1FlexGrid1(i, 2).ToString()
    Label18.Text = C1FlexGrid1(i, 3).ToString()
    Label19.Text = C1FlexGrid1(i, 4).ToString()
    Label20.Text = C1FlexGrid1(i, 5).ToString()
    Label21.Text = C1FlexGrid1(i, 6).ToString()

    If Label17.Text <> "" Then
        GcComboFrame4.Enabled = True
    End If
End Sub

Private Sub C1FlexGrid4_Click(sender As System.Object, e As System.EventArgs) Handles C1FlexGrid4.Click
    Dim i As Integer = C1FlexGrid1.Row

    Label22.Text = C1FlexGrid1(i, 2).ToString()
    Label23.Text = C1FlexGrid1(i, 3).ToString()
    Label24.Text = C1FlexGrid1(i, 4).ToString()
    Label25.Text = C1FlexGrid1(i, 5).ToString()
    Label26.Text = C1FlexGrid1(i, 6).ToString()

    If Label22.Text <> "" Then
        GcComboFrame5.Enabled = True
    End If
End Sub

Private Sub C1FlexGrid5_Click(sender As System.Object, e As System.EventArgs) Handles C1FlexGrid5.Click
    Dim i As Integer = C1FlexGrid1.Row

    Label27.Text = C1FlexGrid1(i, 2).ToString()
    Label28.Text = C1FlexGrid1(i, 3).ToString()
    Label29.Text = C1FlexGrid1(i, 4).ToString()
    Label30.Text = C1FlexGrid1(i, 5).ToString()
    Label31.Text = C1FlexGrid1(i, 6).ToString()
End Sub
C#
private void c1FlexGrid1_Click(object sender, EventArgs e)
{
    int i = c1FlexGrid1.Row;

    label7.Text = c1FlexGrid1[i, 2].ToString();
    label8.Text = c1FlexGrid1[i, 3].ToString();
    label9.Text = c1FlexGrid1[i, 4].ToString();
    label10.Text = c1FlexGrid1[i, 5].ToString();
    label11.Text = c1FlexGrid1[i, 6].ToString();

    if(label7.Text != "")
    {
    gcComboFrame2.Enabled = true;
    }
}

private void c1FlexGrid2_Click(object sender, EventArgs e)
{
    int i = c1FlexGrid1.Row;

    label12.Text = c1FlexGrid1[i, 2].ToString();
    label13.Text = c1FlexGrid1[i, 3].ToString();
    label14.Text = c1FlexGrid1[i, 4].ToString();
    label15.Text = c1FlexGrid1[i, 5].ToString();
    label16.Text = c1FlexGrid1[i, 6].ToString();

    if (label12.Text != "")
    {
        gcComboFrame3.Enabled = true;
    }
}

private void c1FlexGrid3_Click(object sender, EventArgs e)
{
    int i = c1FlexGrid1.Row;

    label17.Text = c1FlexGrid1[i, 2].ToString();
    label18.Text = c1FlexGrid1[i, 3].ToString();
    label19.Text = c1FlexGrid1[i, 4].ToString();
    label20.Text = c1FlexGrid1[i, 5].ToString();
    label21.Text = c1FlexGrid1[i, 6].ToString();

    if (label17.Text != "")
    {
        gcComboFrame4.Enabled = true;
    }
}

private void c1FlexGrid4_Click(object sender, EventArgs e)
{
    int i = c1FlexGrid1.Row;

    label22.Text = c1FlexGrid1[i, 2].ToString();
    label23.Text = c1FlexGrid1[i, 3].ToString();
    label24.Text = c1FlexGrid1[i, 4].ToString();
    label25.Text = c1FlexGrid1[i, 5].ToString();
    label26.Text = c1FlexGrid1[i, 6].ToString();

    if (label22.Text != "")
    {
        gcComboFrame5.Enabled = true;
    }
}

private void c1FlexGrid5_Click(object sender, EventArgs e)
{
    int i = c1FlexGrid1.Row;

    label27.Text = c1FlexGrid1[i, 2].ToString();
    label28.Text = c1FlexGrid1[i, 3].ToString();
    label29.Text = c1FlexGrid1[i, 4].ToString();
    label30.Text = c1FlexGrid1[i, 5].ToString();
    label31.Text = c1FlexGrid1[i, 6].ToString();
}

バルーンチップ表示の処理

 バルーンチップの表示は、ButtonコントロールとGcComboFrameコントロールに、それぞれトリガーとなるイベントハンドラを作成していますので、そこでShowメソッドを実行します。

 Showメソッドでは、表示するコントロールのオブジェクト名と、バルーンの表示位置を指定するTipPosition列挙体のメンバ「BottomRight」を指定します。

 これで、Buttonコントロールは上にマウスポインタが重なるとバルーンが表示され、GcComboFrameコントロールはドロップダウンボタンにマウスポインタが重なるとバルーンが表示されます。ただし、GcComboFrameコントロールが無効状態だとバルーンは表示されません。

 また、最後にButtonコントロールのClickイベントハンドラで、メッセージボックスと「PlusPak for Windows Forms 6.0J」の製品情報を表示する処理を記述します。

Visual Basic
Private Sub GcComboFrame1_MouseHover(sender As System.Object, e As System.EventArgs) Handles GcComboFrame1.MouseHover
    GcBalloonTip1.Show(GcComboFrame1, GrapeCity.Win.Components.TipPosition.BottomRight)
End Sub

Private Sub GcComboFrame2_MouseHover(sender As System.Object, e As System.EventArgs) Handles GcComboFrame2.MouseHover
    GcBalloonTip1.Show(GcComboFrame2, GrapeCity.Win.Components.TipPosition.BottomRight)
End Sub

Private Sub GcComboFrame3_MouseHover(sender As System.Object, e As System.EventArgs) Handles GcComboFrame3.MouseHover
    GcBalloonTip1.Show(GcComboFrame3, GrapeCity.Win.Components.TipPosition.BottomRight)
End Sub

Private Sub GcComboFrame4_MouseHover(sender As System.Object, e As System.EventArgs) Handles GcComboFrame4.MouseHover
    GcBalloonTip1.Show(GcComboFrame4, GrapeCity.Win.Components.TipPosition.BottomRight)
End Sub

Private Sub GcComboFrame5_MouseHover(sender As System.Object, e As System.EventArgs) Handles GcComboFrame5.MouseHover
    GcBalloonTip1.Show(GcComboFrame5, GrapeCity.Win.Components.TipPosition.BottomRight)
End Sub

Private Sub Button1_MouseHover(sender As System.Object, e As System.EventArgs) Handles Button1.MouseHover
    GcBalloonTip1.Show(Button1)
End Sub

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    MessageBox.Show("発注依頼書を送信しました")
    GcComboFrame1.AboutBox()
End Sub
C#
private void gcComboFrame1_MouseHover(object sender, EventArgs e)
{
    gcBalloonTip1.Show(gcComboFrame1, GrapeCity.Win.Components.TipPosition.BottomRight);
}

private void gcComboFrame2_MouseHover(object sender, EventArgs e)
{
   gcBalloonTip1.Show(gcComboFrame2, GrapeCity.Win.Components.TipPosition.BottomRight);
}

private void gcComboFrame3_MouseHover(object sender, EventArgs e)
{
    gcBalloonTip1.Show(gcComboFrame3, GrapeCity.Win.Components.TipPosition.BottomRight);
}

private void gcComboFrame4_MouseHover(object sender, EventArgs e)
{
    gcBalloonTip1.Show(gcComboFrame4, GrapeCity.Win.Components.TipPosition.BottomRight);
}

private void gcComboFrame5_MouseHover(object sender, EventArgs e)
{
    gcBalloonTip1.Show(gcComboFrame5, GrapeCity.Win.Components.TipPosition.BottomRight);
}

private void button1_MouseHover(object sender, EventArgs e)
{
    gcBalloonTip1.Show(button1);
}

private void button1_Click(object sender, EventArgs e)
{
    MessageBox.Show("発注依頼書を送信しました");
    gcComboFrame1.AboutBox();
}

まとめ

 入力支援用コントロールは、常に表示しておきたいコントロールと違い、使いたい時だけ表示されればよいので、グリッドコントロールなどのようにフォームの面積を広く使うコントロールを、ドロップダウンウィンドウに格納できるGcComboFrameコントロールは、フォームデザイン上とても高い効果を生み出します。

 さらに、ドロップダウンウィンドウに配置したコントロールは、他のコントロールと連動してデータ転送などが行えるわけですから、多くのデータを1つのフォーム内で処理したい、というアプリケーションにはおすすめのコントロールといえます。

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

著者プロフィール

  • 瀬戸 遥(セト ハルカ)

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

All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5