外貨両替サンプルソフト


 
日本円とUSドルの外貨両替の結果をVFD256に表示するサンプルソフトです。

VFD256をお買い上げいただくと、このサンプルソフトおよびソースファイルが付属しております。

紙幣(日本札、USドル札)のみの両替です。

 

円両替・ドル両替ごとのレートを入力し、お客様から預かった金額を入力し、両替計算を行いVFD256に表示します。

為替レートは少数第二位まで対応、端数は全て切り捨てで計算を行います。

 

 

 

 

 

 

 

この サンプルソフトはVisual Studio Express2015 for Desktopを使用し作成しております。

ソースファイルも添付しておりますので、Visual Studio Express 2015をインストールして

いただければ、お客様側でプログラム内容を変更していただくことも可能です。

※こちらのソフトは著作権フリーのため、配布(プログラム変更も含む)はお客様の自由です。

 ただし、本ソフトを使用したことが起因とするいかなる損害やトラブルに、弊社は一切の責任を負いません。

 

両替操作

 

起動画面

EXE起動時に、当日の為替レートをそれぞれ入力します。(少数第二位まで入力可能)

 

 2万円分をUSドルに両替

一時お預り金に20000を入力します 「USDボタン」をクリックすると、VFD256表示内容の
  お預り・お渡しに自動計算結果が反映されます。

 

③VFD256に表示ボタンを押すと、VFD256へ両替結果が表示されます。

 

    自動計算内容は、一時お預り金20,000÷ドル売りレート101.96=お渡しUSドル196(端数切捨て)、

    お渡しUSドル196×ドル売りレート101.96=お預り19,984(端数切捨て)の結果をVFD256に表示します。

 
 

 398USドル分を円に両替する

①一時お預り金に20000を入力します ②「JPYボタン」をクリックすると、VFD256表示内容の
  お預り・お渡しに自動計算結果が反映されます。
 

③VFD256に表示ボタンを押すと、VFD256へ両替結果が表示されます。
 

    自動計算内容は、一時お預り金398×ドル買いレート101.89=お渡しJPY40,552(端数切捨て)

 

 

ソースプログラムについて

 

外貨両替サンプルソフトのソースを公開しております。

Visual Studio Express2015 for Desktopで、ソース内容を参考に、文章の変更や

機能追加などお客様側で ソースプログラムの内容を変更していただくことも可能です。

 

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