バックナンバー:VB.NETデータベースプログラミング
ADO.NETの基本的なプログラミングを中心に、すぐ使えるサンプルプログラム満載です。
【第30号】
第30号(2005.8.29発行)
======================================================================
★★ VB.NETデータベースプログラミング奮闘記 ★★
----------------------------------------------------------------------
いつもご購読ありがとうございます。ADO.NETの基本的なプログラミングを中
心に掲載しますので、今後ともよろしくお願い申し上げます。
すぐ使えるADO.NET --> サンプルプログラム満載
http://park5.wakwak.com/‾weblab/
======================================================================
■■ VB.NETワンポイント:For … Next でのループカウンタ宣言 ■■
前号のソースリストの一部です。For … Next の前で、ループカウンタ i を
宣言していました。
Dim i As Integer
For i = 0 To Me.aryBtnMenu.Length - 1
'ボタンのインスタンス生成
Me.aryBtnMenu(i) = New System.Windows.Forms.Button()
'ボタンのプロパティ設定
Me.aryBtnMenu(i).Location = New Point(50, i * 30 + 50)
-------- 以下省略 --------
Next i
VB.NET 2003からは、For…Nextステートメントの中で、ループカウンタ i の
宣言もできるようになりました。
For i As Integer = 0 To Me.aryBtnMenu.Length - 1
-------- 省略 --------
Next i
For Each … Next ステートメントでも同様に宣言することができます。次の
例では、For Each … Next で配列を反復処理し、合計値を求めています。
Dim iAry() As Integer = {1, 4, 5, 8, 10, 12, 15}
Dim iSum As Integer = 0
For Each iNum As Integer In iAry
iSum += iNum
Next iNum
Console.WriteLine("合計= " + CStr(iSum)) '結果確認
なお、このメールマガジンでは、今後も最初に宣言する従来からのコーディン
グスタイルを継続します。
----------------------------------------------------------------------
■■ フォームにメニューボタンを動的に生成する 2 ■■
◆前号再掲
メニューテーブルから、メニューグループ単位にメニューを読み込んで、動的
にボタンを生成し、ボタン形式のメニューを表示するプログラムを作成します。
メニューテーブルは、sample.mdbに下記のように作成して、あらかじめ数件の
レコード登録しておきます。仮に、テーブルのフォームIDに"frmMenu01",
"frmMenu02", "frmMenu03"を登録した場合には、対応するフォームfrmMenu01,
frmMenu02, frmMenu03を同一プロジェクトに追加します。
------------------------------------------------------------------
key フィールド名 データ型 サイズ 値要求 空文字列の許可
------------------------------------------------------------------
○ メニューグループ テキスト型 5 はい いいえ
○ メニューID テキスト型 5 はい いいえ
− メニュー名称 テキスト型 40 はい いいえ
− フォームID テキスト型 16 はい いいえ
− 更新日時 日付/時刻型 − はい −
------------------------------------------------------------------
メニューを表示するためのプロジェクトをひとつ作成します。フォームに
は、コントロールはひとつも貼り付けません。フォームのStartPositionプロ
パティをCenterScreenに設定して、中央に表示するようにします。
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ メインメニュー _□×┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃
┃
┃
┃
┃
┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
それから、メニューから呼び出すフォームfrmMenu01をこのプロジェクトに
追加作成します。タイトルのラベルと終了用のボタンコントロールを貼り付け
ます。終了ボタンを押すと、このフォームを閉じて、メインメニューが表示さ
れます。フォームのStartPositionプロパティをCenterScreenに設定して、中
央に表示するようにします。
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ メニュー01 _□×┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ Label1 btnEnd
┃ ┌――――――――――┐ ┌―――┐
┃ │メニュー01 │ │終 了│
┃ └――――――――――┘ └―――┘
┃ ┃
┃ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
同様にして、frmMenu02, frmMenu03もこのプロジェクトに追加します。
◆前号再掲終了
----------------------------------------------------------------------
今号では、メインメニューから呼び出されるフォームクラスの終了処理につい
て説明します。
メインメニューから呼び出されたフォームは、終了ボタンを押すか、フォーム
右上の×ボタンを押すか、あるいは、Alt + F4 キーを押すと、呼び出された
フォームを破棄して、メインメニューを再表示します。その処理を各イベント
ハンドラに記述します。
フォーム右上の×ボタンを押すか、Alt + F4 キーを押すと、Closingイベント
が発生しますので、まず、このイベントハンドラ
Private Sub frmMenu01_Closing() に終了処理を記述します。
Private Sub frmMenu01_Closing()は、ソースリスト画面の左上にあるコンボ
ボックスから(Base Class Events)を選択し、さらに、右上にあるコンボボッ
クスからclosingを選択すれば、自動的にメソッドの雛型を生成してくれます。
Private Sub frmMenu01_Closing( _
ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs _
) Handles MyBase.Closing
End Sub
さらに、終了ボタン押下時のイベントハンドラ Private Sub btnEnd_Click()
にも、同じ終了処理を記述します。
◆終了処理1:メインメニューの再表示
メニューフォームインスタンスの参照は、Ownerプロパティに設定済ですから、
フォーム型のオブジェクト変数に、この参照を代入して、showメソッドを呼び
出して、メインメニューフォームを再表示します。
◆終了処理2:フォームクラスの破棄
メインメニューの再表示が終わったら、Disposeメソッドを呼び出して確実に
インスタンスを破棄します。念のため、破棄する前にインスタンスが存在する
ことを If Not Me Is Nothing で確認し、oMenuFormにNothingを代入して、
Disposeメソッドを呼び出します。インスタンスの破棄を保証するために、
Try … Finally … End のFinallyブロックにコーディングします。
Try
'終了処理1
oMenuForm = Me.Owner
oMenuForm.Show()
Finally
'終了処理2
If Not Me Is Nothing Then
oMenuForm = Nothing
Me.Dispose()
End If
End Try
それでは、呼び出されるフォームクラスのソースリストを掲載します。
--【プログラムソースリスト】------------------------------------------
Public Class frmMenu01
Inherits System.Windows.Forms.Form
#Region " Windows フォーム デザイナで生成されたコード "
'自動生成部分省略
#End Region
'フォーム固有の処理は省略しました。
Private Sub btnEnd_Click( _
ByVal sender As System.Object, ByVal e As System.EventArgs _
) Handles btnEnd.Click
Me.formClose()
End Sub
Private Sub frmMenu01_Closing( _
ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs _
) Handles MyBase.Closing
Me.formClose()
End Sub
Private Sub formClose()
Dim oMenuForm As Form
Try
oMenuForm = Me.Owner
oMenuForm.Show()
Finally
If Not Me Is Nothing Then
oMenuForm = Nothing
Me.Dispose()
End If
End Try
End Sub
End Class
----------------------------------------------------------------------
■■ 次号予告 第31号(9月20日発行予定) ■■
1. VB.NETワンポイント
2. フォームにメニューボタンを動的に生成する 3
======================================================================
VB.NET データベースプログラミング奮闘記
発行者:ウェブ実験室
http://park5.wakwak.com/‾weblab/
----------------------------------------------------------------------
このメールマガジン(マガジンID: 0000128094)は、
インターネットの本屋さん『まぐまぐ』から配信されています。
http://www.mag2.com/
【購読中止の方法】購読の中止は次のホームページからお願い致します。
http://park5.wakwak.com/‾weblab/
http://www.mag2.com/m/0000128094.htm
----------------------------------------------------------------------
このメールマガジン及び、「すぐ使えるADO.NET」ホームページで公開してい
るソースプログラム・データの利用により生じた損害等については、発行者は
一切責任を負いません。
ソースプログラムの再利用は自由です。著作権は発行者が所有します。
このメールマガジン及び、「すぐ使えるADO.NET」ホームページに掲載されて
いる会社名・製品名等は、各社の登録商標または商標です。
======================================================================
↑このページ(メルマガ:VB.NETデータベース) 先頭へ | すぐ使えるADO.NET ホームへ
Copyright© すぐ使えるADO.NET. All rights reserved.