数字文字列の形式を書式化 <TOP>
GetNumberFormat 指定した数字文字列を、指定したロケール用にカスタマイズされた数字文字列として書式化
'================================================================ '= 数字文字列の形式を書式化 '= (GetNumberFormat.bas) '================================================================ #include "Windows.bi" Type NUMBERFMT NumDigits As Long '小数点以下の数字の数 LeadingZero As Long '小数点以下の数字の数がNumDigitsに満たない場合「0」を加える Grouping As Long 'グループ(日本では千単位)の区切り文字数 lpDecimalSep As Long '小数点を表す文字 lpThousandSep As Long 'グループの区切り文字 NegativeOrder As Long '負数の表示方法 End Type ' 指定されたロケール用にカスタマイズされた数字文字列として数字文字列の形式を設定 Declare Function Api_GetNumberFormat& Lib "kernel32" Alias "GetNumberFormatA" (ByVal Locale&, ByVal dwFlags&, ByVal lpValue$, lpFormat As NUMBERFMT, ByVal lpNumberStr$, ByVal cchNumber&) #define LOCALE_SYSTEM_DEFAULT &H400 'システムのデフォルトロケール #define LOCALE_USER_DEFAULT &H800 '現在のユーザのデフォルトロケール Var Shared Edit(3) As Object Var Shared Text(3) As Object Var Shared Button1 As Object For i = 0 To 3 Edit(i).Attach GetDlgItem("Edit" & Trim$(Str$(i + 1))) Text(i).Attach GetDlgItem("Text" & Trim$(Str$(i + 1))) Edit(i).SetFontSize 14 If i < 1 Then Text(i).SetFontSize 14 Else Text(i).SetFontSize 12 End If Next Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var num As String Var Buff As String Var nf As NUMBERFMT Var Ret As Long num = Edit(0).GetWindowText Buff = String$(255, Chr$(0)) nf.NumDigits = Val(Edit(1).GetWindowText) nf.LeadingZero = 0 nf.Grouping = Val(Edit(2).GetWindowText) nf.lpDecimalSep = StrAdr("." & Chr$(0)) nf.lpThousandSep = StrAdr("," & Chr$(0)) '-1.1 の場合 0:(1.1) 1:-1.1 2:- 1.1 3:1.1- 4:1.1 - nf.NegativeOrder = Val(Edit(3).GetWindowText) Ret = Api_GetNumberFormat(LOCALE_USER_DEFAULT, 0, num, nf, Buff, Len(Buff)) Text(0).SetWindowText Left$(Buff, Ret) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End