不支持 ScaleMode

在 Visual Basic 6.0 中,ScaleMode 属性可用于更改窗体或 PictureBox 控件的坐标系,修改它的默认缇小数位数。

Visual Basic 2008 不支持多个坐标系,只支持像素。在升级过程中,坐标自动从缇转换为像素;在运行时设置 ScaleMode 属性的代码会导致编译错误,必须修改此代码。

备注

升级工具假定 ScaleMode 属性的设计时设置为缇;如果不是这样,转换将不正确,必须修复。

下一步做什么

  1. 移除设置 ScaleMode 属性的代码行。

  2. 检查基于 ScaleMode 属性的任何代码,并根据需要修改任何计算。例如,下面的代码显示如何修改一个使用英寸作为 ScaleMode 的过程。

    ' Visual Basic 6.0
    Form1.ScaleMode = vbInches
    Text1.Move 2, 1
    

    上面的过程将文本框从窗体的左上角右移 2 英寸,并下移 1 英寸。

    ' After upgrade to Visual Basic 2008
    'UPGRADE ISSUE: Constant vbInches was not upgraded.
    'UPGRADE ISSUE: Form property Form1.ScaleMode is not supported.
    ' The next line must be removed in order to compile.
    Form1.ScaleMode = vbInches
    ' Twips are converted to pixels, but the original inch values are used.
    Text1.SetBounds(VB6.TwipsToPixelsX(2), VB6.TwipsToPixelsX(1),...
    

    升级之后,该过程将文本框右移 2 个像素,并下移 1 个像素 - 并不是所需结果。

    ' Modified Visual Basic 2008 code
    ' Removed the ScaleMode line.
    ' Convert the scale (1 inch = 1440 twips).
    Text1.SetBounds(VB6.TwipsToPixelsX(2880), VB6.TwipsToPixelsX(1440),...
    

    通过将英寸乘以 1440,从缇转换到像素现在就得到了与原始 Visual Basic 6.0 代码同样的结果。

请参见

概念

窗体对象(针对 Visual Basic 6.0 用户)