是这样的,我要编一个打印文本居中的函数,
设Text1为: 要打印的文本
例如:                                           
                                                        打印字符数:     左边空格数:
              如果Text1有4个字符则左边的空格数为0         4                 0
              
              如果Text1有3个字符则左边的空格数为1         3                 1
              如果Text1有2个字符则左边的空格数为2         2                 2
              如果Text1有1个字符则左边的空格数为3         1                 3
             
     少的很好办呀,用Case 全列出来就是了,但多了怎么办呀,这个函数用数学表达式怎写,用编程怎写呀?
如:
  Dim x As Integer       'x为要打印字符的个数
Private Sub Command1_Click()
  x = Len(Trim(Text1))
  Select case x
          case 4
             Print Space(0) & Text1.text
          case 3
             Print space(1) & Text1.text 
          case 2  
             Print space(2) & Text1.text
          case 1
             Print space(3) & Text1.text
  End select
End Sub

解决方案 »

  1.   

    Dim x As Integer       'x为要打印字符的个数
    Private Sub Command1_Click()
      x = Len(Trim(Text1))
      Select case x
              case 4
                 Print Space(0) & Text1.text
              case 3
                 Print space(1) & Text1.text 
              case 2  
                 Print space(2) & Text1.text
              case 1
                 Print space(3) & Text1.text
              case else
                 print left(text1.text,4)       '或改成do something
      End select
    End Sub
      

  2.   

    to myhgyp(也许是这样的,信不信由你):print left(text1.text,4) '什么意思呀?
    怎么DO something 呀?如:                    打印字符数:             左边空格数:
                              100                     0
                               99                     1
                               98                     2
                               97                     3
                               96                     4
                               95                     5
                                .                     .
                                .                     .
                                .                     .那怎么写呀,那是不是要写一百条CASE呀?
    还是如下这样写就行了呢?Dim x As Integer       'x为要打印字符的个数
    Private Sub Command1_Click()
      x = Len(Trim(Text1))
      Select case x
              case 100
                 Print Space(0) & Text1.text
              case 99
                 Print space(1) & Text1.text 
              case 98  
                 Print space(2) & Text1.text
              case 97
                 Print space(3) & Text1.text
              case else
                 print left(text1.text,100)     
      End select
    End Sub
      

  3.   

    噢,错了,上面的应该是右对齐,居中需求这样才对:
                          要打印字符个数:              左边空格数:
                               5(全满一行)                 0
                               4                           0.5
                               3                           1
                               2                           1.5
                               1                           2  
    ***************************************************************************
                     要打印字符个数:              左边空格数:
                       100(全满一行)               0        即(100-100)/2
                       99                          0.5      即(100-99)/2
                       98                          1        即(100-98)/2
                       97                          1.5      即(100-97)/2
                       .                           .
                       .                           .
                       .                           .救命呀,没有SPACE(0.5)的,怎么办呀?
      

  4.   

    case else
                 print left(text1.text,4)       '或改成do something
    这说明如长度所有不是一位到四位的情况打印前四位,当然你也可以改成你所想要的结果,如你要全打印,则:
    case else
          print text1.text    
    如要打印前100位:则:
     case else
           print left(text1.text,100) 
       
      

  5.   

    Dim x As Integer       'x为要打印字符的个数
    Private Sub Command1_Click()
      x = Len(Trim(Text1))
      if x>100 then                     '如长度大于100,则打印前100位
          print left(trim(text.text),100)  
      else                              '如长度小于100,则在前面加空格
          print space(100-x) & trim(text1.text)      
      end if 
    End Sub
      

  6.   

    没有SPACE(0.5)的,怎么办呀?
      

  7.   

    右对方齐(如myhgyp(也许是这样的,信不信由你)所说):
    Dim x As Integer       'x为要打印字符的个数
    Private Sub Command1_Click()
      x = Len(Trim(Text1))
      if x>100 then                     '如长度大于100,则打印前100位
          print left(trim(text.text),100)  
      else                              '如长度小于100,则在前面加空格
          print space(100-x) & trim(text1.text)      
      end if 
    End Sub居中类似的为:(但处理不了SPACE(0.5)呀?)
    Dim x As Integer       'x为要打印字符的个数
    Private Sub Command1_Click()
      x = Len(Trim(Text1))
      if x>100 then                     '如长度大于100,则打印前100位
          print left(trim(text.text),100)  
      else                              '如长度小于100,则在前面加空格
          print space((100-x)/2) & trim(text1.text)      
      end if 
    End Sub
    噢,取整是不是INT?
      

  8.   

    笑...!
        方法1:文本框控件的Alignment属性可以直接设置"居中,左对齐,右对齐"效果.
        方法2:用代码实现.
        居中的写法:假设一行可以容纳L个字符,要在text1中显示字符串string1.
    Private Sub Command1_Click()
        Const L As Integer = 10 '文本框一行可显示的最长长度
        Dim string1 As String
        Dim iLen As Integer     '字符串长度
        Dim iSpace As Integer   '要在左边补上的空格数量
        
        string1 = Trim(Text1.Text)
        iLen = Len(string1)
        iSpace = (L - iLen) / 2
        If iSpace > 0 Then
            Text1.Text = Space(iSpace) & string1
        End If
        
    End Sub
      

  9.   

    右对齐的话
        ispace=L - iLen