数値を通貨フォーマットで表示          <TOP>


文字列(数値)を、その地域の通貨フォーマットで表示します。

GetCurrencyFormat 指定された地域の通貨フォーマット

 

数値の前に¥が付く

小数点以下1桁で四捨五入

3桁毎の位取り","が挿入される

 

 

'================================================================
'= 指定された地域の通貨フォーマット
'=    (GetCurrencyFormat.bas)
'================================================================
#include "Windows.bi"

' 指定された地域の通貨フォーマット
Declare Function Api_GetCurrencyFormat& Lib "kernel32" Alias "GetCurrencyFormatA" (ByVal Locale&, ByVal dwFlags&,  ByVal lpValue$, lpFormat As Any, ByVal lpCurrencyStr$, ByVal cchCurrency&)

#define LOCALE_SYSTEM_DEFAULT &H400     'システムのデフォルトロケール
#define LOCALE_USER_DEFAULT &H800       '現在のユーザのデフォルトロケール

Var Shared List1 As Object
Var Shared List2 As Object
Var Shared Timer1 As Object

List1.Attach GetDlgItem("List1") : List1.SetFontSize 14
List2.Attach GetDlgItem("List2") : List2.SetFontSize 14
Timer1.Attach GetDlgItem("Timer1")

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var i As Integer
    Var Buffer As String
    Var Ret As Long
    
    List1.AddString "0.5"
    List1.AddString "1.4"
    List1.AddString "1.5"
    List1.AddString "11.256"
    List1.AddString "899"
    List1.AddString "899.5"
    List1.AddString "1020.21"
    List1.AddString "1020.54"
    List1.AddString "100001.2"

    Buffer = Space$(256)
    
    List2.ResetContent
    For i = 0 To List1.GetCount - 1
        Ret = Api_GetCurrencyFormat(LOCALE_SYSTEM_DEFAULT, 0, List1.GetText(i), ByVal clng(0), Buffer, Len(Buffer))
        List2.AddString Buffer
    Next

    Timer1.SetInterval 5
    Timer1.Enable -1
End Sub

'================================================================
'= 選択された左右の項目を同期させる
'================================================================
Declare Sub Timer1_Timer edecl ()
Sub Timer1_Timer()
    Var List1TopIndex As Integer
    Var List2TopIndex As Integer

    '先頭に表示される項目を揃える
    List1TopIndex  = List1.GetTopIndex

    If List1TopIndex  <> List2TopIndex  Then
        List2.SetTopIndex List1TopIndex 
        List2TopIndex  = List1TopIndex 
    End If

    '選択項目を揃える
    If List1.GetCursel <> List2.GetCursel Then
        List2.SetCursel List1.GetCursel
    End If
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End