連載:VB 6ユーザーのための
これならマスターできるVB 2005超入門

第2回 コントロール配列がなくても大丈夫!

羽山 博
2006/09/23
Page1 Page2 Page3 Page4

思いつきで変えてるわけじゃない……よね

Back Issue
1
VB 6の皆さん、これはもうVB 2005使うしかないでしょ

 ずっと以前に住んでいた公団住宅では、水道の蛇口(水栓)がレバー式になっていて、引っ越した当初はずいぶん戸惑った。というのも、レバーを押し下げると水が出るのではなく、レバーを引き上げると水が出る仕様だったから。

 アフォーダンスなどの認知科学的な考え方を持ち出すまでもなく「押せば出る」のが自然でしょ、と違和感を抱き続けていたのだが、ある日モヤモヤがスッキリ消えてしまう出来事があった。それは、

地震が起こって上からモノが落ちてきたとき水が出っぱなしにならない

という理由を知ったことだった。その瞬間、私のアタマの中で何かがひっくり返り、引き上げる方式の水栓がすっかり手になじむものとなった。その後、また引っ越しをして、いまは押し下げる方式になってしまったのだが……。

 さて、Visual Basic 2005(以下VB 2005)とVisual Basic 6.0(以下VB 6)はバージョン番号こそ違え、「VB」と名が付く以上、基本的な考え方に大きな違いはない……ハズだ。前回はそういう観点でVB 2005を見てきた。が、私の引っ越し体験と同様、大きく違っている個所もいくつかあり、それがVB 2005を敬遠する決定的な障壁になっていることも否めない。

 そういう違和感も、なぜそうなっているかという理由を知れば、雲散霧消。いや、さらに効果的な使い方が見えてくる。もしかすると改悪もあるかもしれないが、それなりに便利で、メリットがあるからこそ、ケンケンゴウゴウの議論の末に仕様が変更されたはずだ。今回はそういったところに焦点を当てていきたい。

コントロール配列がなくなった! どうしよう?!

 VB 6のコントロール配列という機能は直感的に分かりやすく、コードを1カ所にまとめることもできるので、使い勝手が良く、とても便利だった。だが、VB 2005にはコントロール配列そのものが存在しない。

 じゃあ、複数のコントロールで同じイベント・ハンドラ(イベント・プロシージャ)を呼び出したいときにはどうすればいいの? と頭の中が疑問符でいっぱいになる人も多いだろう。きっとまたムツカシイ考え方が取り入れられて面倒になっただけじゃないの、と初めから見切りを付けて使わない人もいるだろう。

 まあ、白状すると私もそうだった。だが、それはまったくの誤解。無知ゆえの根拠のない不安でしかなかった。ヘルプを見ながら実際にプログラムを作ってみると、私の中ではコントロール配列はもう過去の遺物に成り下がってしまった。

 では、そろそろ簡単なプログラムを作って、コントロール配列に代わる機能を試してみよう。

サンプル・プログラム2 − XML文書を表示する

 第2回目にしていきなりXMLなのか! とビビっている方もおられるかもしれないが、それも前回お話ししたように、なんかすごいぞ、高度だぞ、柔軟だぞ、Ajaxだぞ、Web 2.0だぞ……とあおりすぎた私たちライターの責任かもしれない。

 確かにどれもが必要とされる技術ではあるし、学ばなければ何も得られないのも確かなのだが、そもそも人間が考えたものなのだから人間に理解できないわけがない。神様が考えたものであれば、人智を超えたものもあるかもしれないが……おっと、話がそれてしまったので軌道修正しよう。

 今回、最終的にはXML文書を表示するプログラムを作るが、それはちょっと旬なネタだから取り上げたまでのこと(と私もあおりに加担してますネ)。要するに何らかの形式を持ったデータを表示するだけのこと。これまで慣れ親しんできたレコードやフィールドとさして変わらないので心配は無用だ。

 それよりも、今回重要なのはコントロール配列に代わるものの正体だ。そこで、最初はデータグリッドビュー・コントロール(DataGridViewコントロール)に何件かのデータを表示するだけのプログラムとしよう(図1)。


図1 プログラムの完成イメージ
簡単なアクセス・ログ集計プログラム。「番号」は連番とし、「IPアドレス」「アクセス回数」「最終アクセス日付」という列項目がある。画面下部のラジオボタンをクリックすれば、アクセス回数や最終アクセス日付で並べ替えができる。

 では、フォームのデザインから始めよう。VB 2005 Expressを起動して、showXMLというプロジェクト名のWindowsアプリケーションを作ろう。

■フォームをデザインする

 プロジェクトを新規作成すると、フォーム・デザイナのウィンドウが表示される。ツールボックスからデータグリッドビュー(DataGridView)コントロールをフォーム上に配置すると、図2のように、タスク一覧(DataGridViewタスク)が表示される。


図2 データグリッドビュー・コントロールを配置するとタスク一覧が表示される
  アクセス回数のデータを表示するために使うデータグリッドビュー・コントロールを配置する。
  自動的にタスクの一覧が表示される。ほかの位置をクリックすると一覧は消えるが、コントロール右上のスマートタグをクリックすれば、いつでも表示できる。タスク一覧が表示されていないときにはスマートタグは右向きの三角で、タスク一覧が表示されているときは左向きの三角。

 タスク一覧からは、そのコントロールのデザイン時によく使う機能や便利な機能が即座に選べる。この一覧はコントロールの右上に表示されているスマートタグ(小さな三角マーク)をクリックすれば、いつでも表示できるので、ここでは先にほかのコントロールを配置しよう。

 次の図3はラジオボタン・コントロールを2つ、ボタン・コントロールを1つ配置し、プロパティを設定したところ。ラジオボタンはVB 6でオプションボタンと呼ばれていたものと同じだ。


図3 必要なコントロールをすべて配置したフォーム
ラジオボタン・コントロールとボタン・コントロールを配置して、体裁が整ってきた。設定すべきプロパティは表1を参照。

 この2つのラジオボタンは、VB 6なら恐らくコントロール配列として配置しただろうと思う。だが、VB 2005にはコントロール配列がないので、別々のコントロールとして配置する。

 今回の焦点はこれらのラジオボタンをどう取り扱うかということなのだが、そのための準備としてフォームのデザインを完成させることが必要なので、もう少し我慢してほしい。設定すべきプロパティの値は次の表1にまとめてあるので、それに沿って設定してほしい。

コントロール プロパティ 設定値
フォーム Name frmLog
Text アクセス回数
データグリッドビュー Name dgvLog
ラジオボタン Name rbCount
Text 回数で並べ替え(&C)
ラジオボタン Name rbDate
Text 日付で並べ替え(&D)
ボタン Name btnExit
Text 終了(&X)
表1 設定するプロパティとその値の一覧

 続いてはデータグリッドビューに列を追加していく。


 INDEX
  連載:VB 6ユーザーのためのこれならマスターできるVB 2005超入門
  第2回 コントロール配列がなくても大丈夫!
  1.サンプル・プログラム2 − XML文書を表示する
    2.データグリッドビューに列を追加する/イベント・ハンドラを書く
    3.本筋に戻って 〜 イベント・ハンドラを共有する
    4.デザートも豪華 〜 XML文書を読み込んで表示する
 
インデックス・ページヘ  「これならマスターできるVB 2005超入門」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH