画面入力(単一データ入力)
品名と数量を入力する画面を作ってみよう。
COBOL
一行目に品名と数量を入力しEnterキーを押すと下部の枠の中に追加表示していく。
表示行が溢れたら一行目の表示を消し全体を一行上に移動する。
| 品名 数量 [ ][ ] [ ][ ] [ ][ ] [ ][ ] [ ][ ] [ ][ ] [ ][ ] [ ][ ] |
VB.NET
Windows Applicationを選択しFormにTextBox、ButtonそしてLabelを配置します。
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、プログラミングのランキングサイトはこちらです。
最新記事の自動受信登録はこちらです。 |
![]() |
![]() |
![]() |
![]() |
| 固定リンク







コメント