Vb6 表单的宽度属性不是它的属性';设置为,但看起来还可以

Vb6 表单的宽度属性不是它的属性';设置为,但看起来还可以,vb6,width,Vb6,Width,表单的边框样式为“固定单个”,因此用户无法手动更改表单的尺寸 有一个菜单项允许用户为表单选择2个宽度设置中的1个,选择宽度(宽度=11715)将显示额外的控件 在加载事件期间,将调用sub来设置各种值,其中包括以下代码: If rs.Fields("ShowAll").Value = True then Me.Width = 11715 If Me.Width = 11715 Then rs.Fields("ShowAll").Value =

表单的边框样式为“固定单个”,因此用户无法手动更改表单的尺寸

有一个菜单项允许用户为表单选择2个宽度设置中的1个,选择宽度(宽度=11715)将显示额外的控件

在加载事件期间,将调用sub来设置各种值,其中包括以下代码:

     If rs.Fields("ShowAll").Value = True then
        Me.Width = 11715
     If Me.Width = 11715 Then
        rs.Fields("ShowAll").Value = True
     Else
        rs.Fields("ShowAll").Value = False
     End If
在表单卸载事件期间,将调用sub记录下一次的设置,其中包括以下代码:

     If rs.Fields("ShowAll").Value = True then
        Me.Width = 11715
     If Me.Width = 11715 Then
        rs.Fields("ShowAll").Value = True
     Else
        rs.Fields("ShowAll").Value = False
     End If
一个用户报告了这样一种情况,即即使他总是以“宽”的形式关闭,它也总是以“窄”的形式打开

我以前从未见过这种情况发生,也没有人报告过,这并不是说其他地方没有发生这种情况

他的电脑是Windows7,屏幕分辨率是1280x1024

编辑:
另外,当我检查他的数据库时,“ShowAll”的值为False

如果要硬编码宽度,则必须选择多个twip,小字体为15的倍数,大字体为12的倍数。两者的最小倍数为60,因此最接近硬编码值的是11700,小字体为780px,大字体为975px


请注意,除了96(又名“小字体”)和120(又名“大字体”)之外,win7还有更多的DPI大小,这两种字体完全不能满足VB6表单子系统的要求。因此,您可以安全地假设在VB6中,像素大小为15或12 twips。

如果要硬编码宽度,则必须选择多个twips,小字体为15的倍数,大字体为12的倍数。两者的最小倍数为60,因此最接近硬编码值的是11700,小字体为780px,大字体为975px


请注意,除了96(又名“小字体”)和120(又名“大字体”)之外,win7还有更多的DPI大小,这两种字体完全不能满足VB6表单子系统的要求。因此,您可以安全地假设在VB6中,像素大小为15或12 twips。

我建议使用表单级别的布尔变量,而不是特定的数字。如果希望更易于理解,也可以将其包装到属性中。加载应用程序时使用数据库值初始化变量,单击按钮选择表单大小时切换该值

Private m_blnExpanded As Boolean

Private Property Let Expanded(ByVal vExpanded As Boolean)

       m_blnExpanded = vExpanded

End Property
Private Property Get Expanded() As Boolean

       Expanded = m_blnExpanded

End Property

我建议使用表单级别的布尔变量,而不是特定的数字。如果希望更易于理解,也可以将其包装到属性中。加载应用程序时使用数据库值初始化变量,单击按钮选择表单大小时切换该值

Private m_blnExpanded As Boolean

Private Property Let Expanded(ByVal vExpanded As Boolean)

       m_blnExpanded = vExpanded

End Property
Private Property Get Expanded() As Boolean

       Expanded = m_blnExpanded

End Property

我认为你的答案是正确的,我学到了一些新的东西,谢谢!。我以与客户相同的分辨率将dpi重置为120 dpi,我遇到了相同的现象。你能告诉我vb6 ide是否“强制”用户以15倍的宽度绘制表单,因为我从未意识到11715是15的倍数ide将所有大小以twips(表单的宽度/高度,控件的左/上)对齐为15或12倍,具体取决于当前开发机器的字体大小,这可能会导致在客户端计算机上出现亚像素位置。将
ScaleMode
更改为像素并不能缓解此问题,而且表单的宽度和高度始终以twips为单位
ScaleMode
影响包含的控件left/top和窗体的scalewidth/scaleheight。非常感谢,这些都是很好的信息。为了像我昨天这样无知的人的利益,如果你有96 dpi(每英寸点数/像素),那么因为每英寸1440 twips,这意味着每点/像素1440/96=15 twips。我认为你的答案是正确的,我学到了一些新的东西谢谢!。我以与客户相同的分辨率将dpi重置为120 dpi,我遇到了相同的现象。你能告诉我vb6 ide是否“强制”用户以15倍的宽度绘制表单,因为我从未意识到11715是15的倍数ide将所有大小以twips(表单的宽度/高度,控件的左/上)对齐为15或12倍,具体取决于当前开发机器的字体大小,这可能会导致在客户端计算机上出现亚像素位置。将
ScaleMode
更改为像素并不能缓解此问题,而且表单的宽度和高度始终以twips为单位
ScaleMode
影响包含的控件left/top和窗体的scalewidth/scaleheight。非常感谢,这些都是很好的信息。为了像我昨天这样无知的人的利益,如果你有96 dpi(每英寸点数/像素),那么因为每英寸1440 twips,这意味着每点/像素1440/96=15 twips。你的方法是正确的,以避免我为自己制造的困难。然而,wqw向我解释了哪里出了问题,这就是为什么我选择了他的答案作为正确答案的原因。你的方法是正确的,以避免我给自己造成的困难。然而,wqw向我解释了出了什么问题,这就是为什么我选择了他的答案作为正确答案