文字列を(左・中央・右)揃え表示する |
文字列(半角・全角混在)を(左・中央・右)揃えで表示する (108) | |
まず、前準備としてANSI(旧Basic)流文字列長を得るを参考に関数 fLenA を作成下さい。 フォームにコマンドボタンを貼り付けておいて下さい ボタンの横幅は30文字分で設定 Option Explicit 'SampleNo=108 WindowsXP VB6.0(SP5) 2002.05.21 Private Function fLenA(ByVal ss As String) As Integer fLenA = LenB(StrConv(ss, vbFromUnicode)) End Function Private Function fStrAlignment(ByRef Mystr As String, _ ByVal LenN As Integer, Optional ByVal Mode As Integer = 0) As String '*================================================================= '* Mystr 対象文字列 '* LenN 表示範囲(半角文字換算) '* Mode 1=右揃え 2=中央揃え その他=左揃え '*================================================================= Dim strWkstr As String Dim intSpcN As Integer strWkstr = Trim$(Mystr) '文字列の前後の空白を削除 '文字列が0又は表示範囲より長い文字列は終了 If LenN < 1 Or LenN <= fLenA(strWkstr) Then fStrAlignment = strWkstr Exit Function End If intSpcN = LenN - fLenA(strWkstr) '表示範囲−文字列の長さ If Mode = 1 Then '右揃え Mystr = String$(intSpcN, " ") & strWkstr ElseIf Mode = 2 Then '中央揃え Mystr = String$(intSpcN \ 2, " ") & strWkstr & _ String$(intSpcN - (intSpcN \ 2), " ") Else '左揃え Mystr = strWkstr & String$(intSpcN, " ") '文字列の右に空白 End If fStrAlignment = Mystr End Function Private Sub Command1_Click() 'Alignment の設定 Dim strMyString As String strMyString = "VisualBasic花ちゃん" Command2.Caption = fStrAlignment(strMyString, 30) '左 Command3.Caption = fStrAlignment(strMyString, 30, 1) '右 Command4.Caption = fStrAlignment(strMyString, 30, 2) '中央 End Sub 結 果 ※ サンプルでは表示範囲より長い文字列は処理を終了していますが実際使われる場合は必要により文字数カットの処理を追加して下さい。 |
|
上記同様でAPIを使った方法でコマンドボタンアライメントを設定しています。 (118) | |
Option Explicit 'SampleNo=118 WindowsXP VB6.0(SP5) 2002.05.22 'ウィンドウに関するデータを取得する(P59) Private Declare Function GetWindowLong Lib "user32" _ Alias "GetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long) As Long 'ウィンドウに関する属性を変更する(P60) Private Declare Function SetWindowLong Lib "user32" _ Alias "SetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Const GWL_STYLE = (-16) 'ウィンドウスタイル Private Const BS_LEFT = &H100& '左揃え Private Const BS_RIGHT = &H200& '右揃え Private Const BS_CENTER = &H300& '中央揃え '************************************************* '* MyCmdButton = CommandButton名 '* Alignment=0 左揃え '* Alignment=1 右揃え '* Alignment=2 中央揃え '************************************************* Private Sub sCmdAlignment(MyCmdButton As CommandButton, Alignment As Integer) Dim lngResult As Long With MyCmdButton lngResult = GetWindowLong(.hwnd, GWL_STYLE) Select Case Alignment Case 0 '左揃え lngResult = lngResult Or BS_LEFT Case 1 '右揃え lngResult = lngResult Or BS_RIGHT Case Else '中央揃え lngResult = lngResult Or BS_CENTER End Select lngResult = SetWindowLong(.hwnd, GWL_STYLE, lngResult) .Refresh End With End Sub Private Sub Command1_Click() '左揃え Call sCmdAlignment(Command1, 0) End Sub Private Sub Command2_Click() '右揃え Call sCmdAlignment(Command2, 1) End Sub Private Sub Command3_Click() '中央揃え Call sCmdAlignment(Command3, 2) End Sub Private Sub Form_Load() Call sCmdAlignment(Command3, 0) End Sub |
2002/05/21