Board logo

標題: [發問] 請教表單內 Label 上下左右置中問題 [打印本頁]

作者: mark15jill    時間: 2012-11-23 16:59     標題: 請教表單內 Label 上下左右置中問題

網路上找到有人分享 Label字串置中(上下左右),但是該原始碼似乎只能用於單一物件。
有試著改寫,但顯示出來 僅水平置中
請問若以 迴圈來表示的話
該要如何修正比較恰當

[attach]13259[/attach]
  1. Private Sub UserForm_Initialize()
  2.     Dim lab As MSForms.Label
  3.     Dim xx As Integer
  4.     Dim yy As Integer
  5.    
  6.     With UserForm1
  7.         .Height = 500
  8.         .Width = 500
  9.             For yy = 1 To 500 Step 100
  10.                 For xx = 1 To 500 Step 100
  11.                     Set lab = .Controls.Add("forms.label.1")
  12.                     With lab
  13.                         '.Caption = .Name
  14.                         
  15.                         .Top = 10 + yy
  16.                         .Left = 10 + xx
  17.                         .AutoSize = False
  18.                         .BackColor = &HC0FFC0
  19.                         
  20.                         Dim str As String
  21.                         Dim strout As String
  22.                         str = .Name
  23.                         'strout = ""
  24.                         .BorderStyle = fmBorderStyleSingle
  25.                         .TextAlign = fmTextAlignCenter
  26.                         .WordWrap = True
  27.                         strout = .Name
  28.                         .Caption = strout
  29.                     End With
  30.                 Next
  31.             Next
  32.    
  33.     End With
  34. End Sub


  35. '以下是某網站的 LABEL 字串置中範例
  36. '    Dim str As String = "這裡放上您要的字"
  37. '    Dim strOut As String = ""
  38. '    Label1.BorderStyle = BorderStyle.FixedSingle
  39. '    Label1.TextAlign = ContentAlignment.TopCenter
  40. '    For Each ch As Char In str.ToCharArray
  41. '        strOut &= ch & ControlChars.CrLf
  42. '    Next
  43. '    Label1.Text = strOut
複製代碼

作者: GBKEE    時間: 2012-11-26 15:45

回復 1# mark15jill
試試看
  1. With lab
  2.               .Top = 10 + yy
  3.               .Left = 10 + xx
  4.               .Font.Size = 12         '字型大小
  5.               .Height = .Font.Size + .Font.Size * 0.1  '調整高度
  6.              '  .AutoSize = False
複製代碼

作者: mark15jill    時間: 2012-11-26 16:13

本帖最後由 mark15jill 於 2012-11-26 16:17 編輯

回復 2# GBKEE


    GBKEE大大,謝謝。

    這方法可以,但是,測試結果 僅限於 字體大小比較小的時候適用。
    用大小 36 測試後,反而會有點往上偏。
   
[attach]13290[/attach]
作者: GBKEE    時間: 2012-11-26 16:32

回復 3# mark15jill
字型大於36  時可調整 0.1  試試看
   
  1. .Height = .Font.Size + .Font.Size * 0.1  '調整高度
複製代碼

作者: mark15jill    時間: 2012-11-26 16:59

回復 4# GBKEE


    剛試著修改視窗大小,沒改沒事情,改了變成...




[attach]13291[/attach]
<發現哪邊怪怪的了嗎?>
  1. Private Sub UserForm_Initialize()

  2.     Dim lab As MSForms.Label

  3.     Dim xx As Integer

  4.     Dim yy As Integer

  5.    
  6.     With UserForm1

  7.         .Height = 700

  8.         .Width = 1400

  9.             For yy = 1 To 700 Step 100

  10.                 For xx = 1 To 1400 Step 200

  11.                     Set lab = .Controls.Add("forms.label.1")

  12.                     With lab

  13.                         '.Caption = .Name

  14.                         

  15.                         .Top = 10 + yy

  16.                         .Left = 10 + xx

  17.                         .AutoSize = False
  18.                         
  19.                         .Font.Size = 36        '字型大小
  20.                         
  21.                         .Height = .Font.Size + .Font.Size * 0.1  '調整高度
  22.                         
  23.                         .Width = 100

  24.                         .BackColor = &HC0FFC0



  25.                         

  26.                         Dim str As String

  27.                         Dim strout As String

  28.                         str = .Name

  29.                         'strout = ""

  30.                         .BorderStyle = fmBorderStyleSingle

  31.                         .TextAlign = fmTextAlignCenter

  32.                         .WordWrap = True

  33.                         strout = .Name

  34.                         .Caption = strout

  35.                     End With

  36.                 Next

  37.             Next

  38.    
  39.     End With

  40. End Sub
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)