« ファイルマッチング | トップページ | ソート・マージ »

2007年5月10日 (木)

画面入力(単一データ入力)

品名と数量を入力する画面を作ってみよう。
COBOL
一行目に品名と数量を入力しEnterキーを押すと下部の枠の中に追加表示していく。
表示行が溢れたら一行目の表示を消し全体を一行上に移動する。

              品名                     数量
             [                         ][     ]

             [                         ][     ]
             [                         ][     ]
             [                         ][     ]
             [                         ][     ]
             [                         ][     ]
             [                         ][     ]
             [                         ][     ]

VB.NET
Windows Applicationを選択しFormにTextBox、ButtonそしてLabelを配置します。
Form_vb 
TextBox1
TextBox2
TextBox3...MultiLineをTrueにしてサイズを変更する。
TextBox4...MultiLineをTrue       "
配置完了後、Form1.vb[Design]でButton1をダブルクリックすると、イベントに対応するソースが自動生成されます。
次に以下のコードをイベントプロシジャに打ち込みます。
        Me.TextBox3.Text += Me.TextBox1.Text + ControlChars.CrLf
        Me.TextBox4.Text += Me.TextBox2.Text + ControlChars.CrLf

打ち込んだらデバッグを開始します。
品名、数量に入力してButton1を押すとTextBox3,TextBox4に追加されていきます。
たった四行でなぜ動くのか疑問ですね。実は画面ソースのコードは自動生成され別ファイルに保存され通常ではユーザは意識する必要は有りません。

 しかしこの画面ではまだCOBOLをマネ切れていません。数値入力はできますが数値以外も入力できてしまいます。
VB.NETでCOBOLの様に数値専用の入力を行うには商用のライブラリーをインストールするか自分でコードを作成するかします。
市販の画面コントロールライブラリー例)InputMan....TextBoxの拡張版です。

VB.NETでTextBoxを数値専用入力にするコード
 TextBox2(数量)プロパティの変更
 MaxLength→5 既定だと32767桁の入力が可能なので5桁に制限します。
 TextAlign→Right右寄せにします。
 以下のコードを打ち込みます。
 キーボードから一文字入力のイベントが発生するたびに入力文字e.KeyCharを検査しIfの判定文にある文字のみが入力可能になります。
    Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) _
       Handles TextBox2.KeyPress
        If ("0123456789" & Chr(Keys.Back) & Chr(Keys.Delete)).IndexOf(e.KeyChar) = -1 _
        Then
            e.Handled = True
        End If
    End Sub

 WindowsのようなGUI画面ではペーストも考慮しなければなりません。数値以外の文字をペーストした場合0にします。
 TextBox2をダブルクリックしてイベントプロシジャを自動生成し数値判定のコードを入力します。
    Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
        If Not IsNumeric(Me.TextBox2.Text) Then
            Me.TextBox2.Text = 0
        End If
    End Sub

VB.NETのコーディングは大海の一滴を探すようなもの
 COBOLは事務処理に最適化されていて機能はシンプルです。VB.NETは多機能で目的の機能を探し当てるのは大海の一滴を探すような思いをすることも度々です。
 同様の機能なのに複数の命令が有ったり命令語に一貫性が無かったりします。事務処理に最適化されたCOBOLのプログラミングを基にVB.NETのコーディングをすれば
効率で保守性の高いコーディングができればしめたものです。

お役に立てましたか?
IT、プログラミングのランキングサイトはこちらです。

にほんブログ村 IT技術ブログへ 人気blogランキングへ FC2 Blog Rankingへ


最新記事の自動受信登録はこちらです。

はてなRSSに追加

livedoor Readerに追加
My Yahoo!に追加
Googleに追加
goo RSSリーダーに追加

|

« ファイルマッチング | トップページ | ソート・マージ »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/279803/6374183

この記事へのトラックバック一覧です: 画面入力(単一データ入力):

« ファイルマッチング | トップページ | ソート・マージ »