Public Class
frmvfd256
Private UD
As String =
"" 'ドル売りレートの値
Private JY
As String =
"" 'ドル買いレートの値
Private dea
As String =
"" '一時お預りの値
Private ud_1
As Decimal = 0 'UDをDecimalにした変数
Private jy_1
As Decimal = 0 'JYをDecimalにした変数
Private dea_1
As Decimal = 0 'deaをDecimalにした変数
Dim jpy_flag
As Boolean =
False
'一時お預り金に入力された際にJPYを先頭につけるかどうかのフラグ
Dim usd_flag
As Boolean =
False
'一時お預り金に入力された際にUDSを先頭につけるかどうかのフラグ
Private Sub
frmvfd256_Load(sender As Object, e
As EventArgs)
Handles MyBase.Load
'起動時にUsdexchang.Text(ドル売り)にカーソルをあてる
ActiveControl = Me.Usdexchange
End Sub
Private Sub Usdexchange_KeyPress(sender
As Object, e
As KeyPressEventArgs)
Handles Usdexchange.KeyPress
'ここではUsdexchange.text(ドル売り)にキーボードから入力した時に発生するイベント
'ドル売りレートTextBoxに数字、ピリオド、Backspaceのみを入力
'ピリオドが1回入力されていたら、重複入力できないようにする
'先頭文字がピリオドの場合入力を無効にする
If (e.KeyChar < "0"c
Or e.KeyChar >
"9"c)
And e.KeyChar <>
"."c And e.KeyChar <> vbBack
OrElse
e.KeyChar = "."c
And Usdexchange.Text.IndexOf(".") <> -1
Then
e.Handled = True
ElseIf Usdexchange.SelectionStart =
CInt((e.KeyChar <>
"."c)) Then
e.Handled = True
End If
End Sub
Private Sub Jpyexchange_KeyPress(sender
As Object, e
As KeyPressEventArgs)
Handles Jpyexchange.KeyPress
'ここではJpyexchange.text(ドル買い)にキーボードから入力した時に発生するイベントです。
'ドル買いレートのTextBoxに数字、ピリオド、Backspaceのみを入力
'ピリオドが1回入力されていたら、重複入力できないようにする
'先頭文字がピリオドの場合入力を無効にする
If (e.KeyChar <
"0"c
Or e.KeyChar > "9"c)
And e.KeyChar <>
"."c And e.KeyChar <> vbBack
OrElse
e.KeyChar = "."c
And Jpyexchange.Text.IndexOf(".")
<> -1 Then
e.Handled =
True
ElseIf Jpyexchange.SelectionStart = CInt((e.KeyChar <>
"."c))
Then
e.Handled = True
End If
End Sub
Private Sub DepositA_KeyPress(sender
As Object, e
As KeyPressEventArgs)
Handles DepositA.KeyPress
'DepositA.Text=一時お預り金TextBox
'ここではDepositA.Textにキーボードから入力した時に発生するイベントです
'一時お預り金入力Textに数字、Backspaceのみを入力
If (e.KeyChar <
"0"c Or e.KeyChar >
"9"c)
And e.KeyChar <>
vbBack Then
e.Handled = True
End If
'一時お預り金Textにカーソルがある場合にキーボードのuを押すと、USDボタン(ドル売り)を押した動作をする
'一時お預り金Textにカーソルがある場合にキーボードのjを押すと、JPYボタン(ドル買い)を押した動作をする
'一時お預り金Textにカーソルがある場合にキーボードのEnterを押すと、VFD256に表示ボタンを押した動作をする
'一時お預り金Textにカーソルがある場合にキーボードのEscボタンを押すと、一時お預り金Text欄をクリアする
'一時お預り金Textにカーソルがある場合にキーボードのcを押すと、クリアボタンを押した動作をする
If e.KeyChar =
"u"c
Then
usd.PerformClick()
e.Handled = True
ElseIf e.KeyChar = "j"c
Then
jpy.PerformClick()
e.Handled = True
ElseIf e.KeyChar =
Microsoft.VisualBasic.ChrW(Keys.Enter)
Then
Rundbutton.PerformClick()
e.Handled = True
ElseIf e.KeyChar =
Microsoft.VisualBasic.ChrW(Keys.Escape)
Then
DepositA.Text = ""
e.Handled = True
ElseIf e.KeyChar = "c"c
Then
jpy.PerformClick()
e.Handled = True
End If
End Sub
Private Sub usd_Click(sender
As Object, e
As EventArgs)
Handles usd.Click
'USDボタンをクリックしたときの処理
Dim ans As Decimal
= 0 'ud_1とJy_1の積商の値
Dim ans_2
As Decimal = 0 'ud_1とJy_1の商の値
Dim rea As String 'Decimal型ansをString型に変換してTextに表示させるための宣言
Dim azu As String
'Decimal型ans_1をString型に変換してTextに表示させるための宣言
If Usdexchange.Text =
""
Then
'ドル売りレートが空白でUSDボタンを押されたときにエラーメッセージを出す
MsgBox("ドル売りレートを入力してください。")
ElseIf DepositA.Text =
""
Then
'一時お預り金が空白でUSDボタンを押されたときにエラーメッセージを出す
MsgBox("一時お預り金をを入力してください。")
Else
usd_flag = True
jpy_flag = False
UD = Usdexchange.Text
dea = DepositA.Text
currency.Text = "JPY" 'currency.LabelにJPYを入力する
ud_1 = Decimal.Parse(UD)
'四則計算を行えるよう、UDとdeaをString型からDecimal型のud_1とdea_1に変換する。
dea_1 = Decimal.Parse(dea)
ans = Math.Truncate(dea_1 / ud_1) 'dea_1(一時預かり金)÷ud_1(ドル売りレート)の端数を切り捨てた数値をans(お渡し)とする
rea = henkan(ans)
'TextBoxに表示するためDecimal型からString型に変更
Realization.Text = "USD" + rea
'Realization.Textに、USDとrea
ans_2 = Math.Truncate(ans * ud_1)
'ans(お渡し)×ud_1(ドル売りレート)でお預りをTextBoxに表示するためDecimal型からString型に変更
azu = henkan(ans_2)
DepositB.Text = "JPY" + azu
End If
'USDボタンを押したらフォーカスを一時お預りTextに移す
With DepositA
.Focus()
.SelectionStart = .SelectionStart + .Text.Length
End With
End Sub
Private Sub jpy_Click(sender
As Object, e
As EventArgs)
Handles jpy.Click
'JPYボタンをクリックしたときの処理
Dim ans As Decimal = 0 'ud_1とJy_1の積商の値
Dim rea As String 'Decimal型ansをString型に変換してTextに表示させるための宣言
If Jpyexchange.Text =
""
Then 'ドル売りレートが空白でUSDボタンを押されたときにエラーメッセージを出す
MsgBox("ドル買いレートを入力してください。")
ElseIf DepositA.Text = ""
Then
'一時お預り金が空白でUSDボタンを押されたときにエラーメッセージを出す
MsgBox("一時お預り金をを入力してください。")
Else
jpy_flag = True
usd_flag = False
JY = Jpyexchange.Text
dea = DepositA.Text
currency.Text = "USD" 'currency.LabelにUSDを入力する
jy_1 = Decimal.Parse(JY)
'四則計算を行えるよう、JYとdeaをString型からDecimal型のjy_1とdea_1に変換する
dea_1 = Decimal.Parse(dea)
ans = Math.Truncate(dea_1 * jy_1) 'dea_1(一時預かり金)×ud_1(ドル買いレート)の端数を切り捨てた数値をans(お渡し)とする
'dea_1×jy_1の桁が8桁(千万の位)の場合、VFD256への表示桁数をオーバーするので、8桁になった場合はエラーを出す
If ans.ToString.Length < 8
Then
rea = henkan(ans)
Realization.Text = "JPY" + rea
Else
rea = henkan(ans)
Realization.Text = "JPY"
+ rea
MsgBox("お渡し金が1千万を超えました。" + vbCrLf + "VFD256への表示桁オーバーです。")
End If
DepositB.Text = "USD" + dea
End If
'JPYボタンを押したらフォーカスを一時お預りTextに移す
With DepositA
.Focus()
.SelectionStart = .SelectionStart + .Text.Length
End With
End Sub
Private Sub DepositA_TextChanged(sender
As System.Object, e
As System.EventArgs)
Handles DepositA.TextChanged
'一時お預り金(DepositA.Text)に入力された数値に3桁ごとにカンマを入れるため、NumTextBoxを呼び出す処理
Dim strText
As String =
""
Dim i As Integer = 0
If DepositA.Text.Length > 0
Then
Format_NumTextBox(DepositA.Text, strText)
DepositA.Text = strText
DepositA.SelectionStart = DepositA.TextLength
End If
End Sub
Private Sub Format_NumTextBox(ByVal strText
As String,
ByRef
strRetText As String)
'数値に3桁ごとのカンマを入れる処理
Dim suuji
As String =
""
Dim suuji_a
As String =
""
For i = 0
To DepositA.Text.Length - 1
suuji_a = strText.Substring(i, 1)
If strText.Substring(i, 1) >=
"0"
And strText.Substring(i,
1) <= "9"
Then
suuji = suuji + DepositA.Text.Substring(i, 1)
End If
Next
If jpy_flag =
True Then
strRetText = String.Format("{0:#,##0}",
CLng(suuji))
jpy_flag = False
ElseIf usd_flag =
True Then
strRetText = String.Format("{0:#,##0}",
CLng(suuji))
usd_flag = False
Else
strRetText = String.Format("{0:#,##0}",
CLng(suuji))
End If
End Sub
Private Function henkan(aaa
As Decimal)
As String
'Decimal型の値をString型に変換し、3桁ごとにカンマを入れる(DepositB.Text、Realization.Text入力用)
Dim bbb As String =
""
bbb = String.Format("{0:#,##0}", aaa)
Return bbb
End Function
Private Sub Button3_Click(sender
As Object, e
As EventArgs)
Handles Runbutton.Click
'VFD256へ表示ボタンを押した時の処理
'お預り、お渡しに値が入力されていない場合は、エラーメッセージを表示する
If
DepositB.Text = ""
OrElse Realization.Text = ""
Then
MsgBox("お預り、お渡し金額が入力されていません")
End
If
'VFD256に20桁2行表示24ドット表示のパラメータ(Ma)を送り換金内容を表示する
'1行目にお預り、スペース2個分、お預り金額が表示
'2行目にお渡し、スペース2個分、お渡し金額が表示
If Realization.Text.Length < 13
Then
DepositA.Focus()
Dim temp1
As String =
"お預り " & DepositB.Text.PadLeft(12)
Dim temp2
As String =
"お渡し " &
Realization.Text.PadLeft(12)
Shell("\VFD256DISP\VFD256DISP.EXE /Ma " &
"""" & temp1 &
"""" &
" " &
"""" & temp2 &
"""")
Else
'20桁以上になる場合にエラーメッセージを出してVFD256へ表示を行わない
MsgBox("VFD256への表示桁オーバーです。" + vbCrLf +
"一時お預かり金を入力し直してください。")
With DepositA
.Focus()
.SelectionStart = .SelectionStart + .Text.Length
End With
End If
End Sub
Private Sub Button5_Click(sender
As Object, e
As EventArgs)
Handles Clear.Click
'クリアボタンを押した際に、ドル売りレート(Usdexchange.Text)とドル買いレート(Jpyexchange.Text)以外の内容をクリアする
DepositA.Text = ""
DepositB.Text = ""
Realization.Text = ""
currency.Text = ""
DepositA.Focus()
'パラメータCLSを送りVFD256の表示内容をクリアする
Shell("\VFD256DISP\VFD256DISP.EXE /CLS")
End Sub
End Class
|