在我设计的界面中,采用了大家都推荐的下列程序来缩放界面,一般情况下正常,但是在使用了SSTab控件后,运行情况相当糟糕,请各位大侠不吝赐教。
Option   Explicit   
  Private   FormOldWidth   As   Long   
  '`保存窗体的原始宽度   
  Private   FormOldHeight   As   Long   
  '`保存窗体的原始高度   
    
  '`在调用ResizeForm前先调用本函数   
  Public   Sub   ResizeInit(FormName   As   Form)   
  Dim   Obj   As   Control   
  FormOldWidth   =   FormName.ScaleWidth   
  FormOldHeight   =   FormName.ScaleHeight   
  On   Error   Resume   Next   
  For   Each   Obj   In   FormName   
  Obj.Tag   =   Obj.Left   &   "   "   &   Obj.top   &   "   "   &   Obj.Width   &   "   "   &   Obj.Height   &   "   "   
  Next   Obj   
  On   Error   GoTo   0   
  End   Sub   
    
  '`按比例改变表单内各元件的大小,   
  '在调用ReSizeForm前先调用ReSizeInit函数   
  Public   Sub   ResizeForm(FormName   As   Form)   
  Dim   Pos(4)   As   Double   
  Dim   I   As   Long,   TempPos   As   Long,   StartPos   As   Long   
  Dim   Obj   As   Control   
  Dim   ScaleX   As   Double,   ScaleY   As   Double   
    
  ScaleX   =   FormName.ScaleWidth   /   FormOldWidth   
  '`保存窗体宽度缩放比例   
  ScaleY   =   FormName.ScaleHeight   /   FormOldHeight   
  '`保存窗体高度缩放比例   
  On   Error   Resume   Next   
  For   Each   Obj   In   FormName   
  StartPos   =   1   
  For   I   =   0   To   4   
  '`读取控件的原始位置与大小   
    
  TempPos   =   InStr(StartPos,   Obj.Tag,   "   ",   vbTextCompare)   
  If   TempPos   >   0   Then   
  Pos(I)   =   Mid(Obj.Tag,   StartPos,   TempPos   -   StartPos)   
  StartPos   =   TempPos   +   1   
  Else   
  Pos(I)   =   0   
  End   If   
  '`根据控件的原始位置及窗体改变大小的比例对控件重新定位与改变大小   
  Obj.Move   Pos(0)   *   ScaleX,   Pos(1)   *   ScaleY,   Pos(2)   *   ScaleX,   Pos(3)   *   ScaleY   
  Next   I   
  Next   Obj   
  On   Error   GoTo   0   
  End   Sub   我的界面及程序在下面邮箱中,请各位高手指导!!!
[email protected] 密码:051122
在下分数不多,全部给了。

解决方案 »

  1.   

    前几天回答了这样的问题 http://topic.csdn.net/u/20080806/11/60596aaf-67f1-4c11-8fdf-dd9996df4869.html建议 SSTab1里面的控件 用下面的代码来调节Private Sub SSTab1_Click(PreviousTab As Integer) Select Case SSTab1.Tab 
        Case 0 
        Me.Picture1.Width = 1000 
        Case 1 
        Command1.Width = 2000 End Select 
    End Sub 
      

  2.   

    在原来的代码里修改呢?我的控件基本上都是放在SSTAB里面的,这样岂不是手动一样了,望赐教!
      

  3.   

    那如果在刚运行而且没有改变窗体的情况下对SSTAB有一个CLICK事件,那样就乱了吧?
      

  4.   

    最近也在用以上的这段经典代码左窗口缩放,遇到了同样的问题,跟踪是“控件.left”的问题,即相对与绝对的问题。当控件比如一个Text控件放在SSTAB上时,它的Left是相对于SSTAB的位置,而SSTAB很有可能不是整个窗体的绝对位置,即(0,0)。所以当移动时出现了负值。