バックナンバー: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.