【问题标题】:Width property of form is not what it's set to, though looks OK表单的宽度属性不是它设置的,虽然看起来不错
【发布时间】:2011-04-21 22:50:04
【问题描述】:

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

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

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

     If rs.Fields("ShowAll").Value = True then
        Me.Width = 11715

在表单卸载事件期间,会调用一个 sub 来记录下一次的设置,其中包括以下代码:

     If Me.Width = 11715 Then
        rs.Fields("ShowAll").Value = True
     Else
        rs.Fields("ShowAll").Value = False
     End If

一位用户报告了一种情况,即使他总是以“宽”形式关闭它,但它总是以“窄”形式打开。

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

他的机器是windows 7,屏幕分辨率是1280 X 1024。

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

【问题讨论】:

    标签: vb6 width


    【解决方案1】:

    我建议使用表单级布尔变量而不是特定数字。如果你想让它更容易理解,你也可以将它包装在一个属性中。加载应用程序时使用数据库值初始化变量,并在单击按钮以选择表单大小时切换值。

    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
    

    【讨论】:

    • 你的方式是正确的做法,以避免我给自己造成的困难。然而 wqw 向我解释出了什么问题,这就是为什么我选择他的答案作为正确的答案
    【解决方案2】:

    如果您要对宽度进行硬编码,那么您必须选择小字体的 15 倍数和大字体的 12 倍数的缇。两者的最小倍数是 60,因此最接近硬编码值的是 11700,即小字体为 780 像素,大字体为 975 像素。

    请注意,除了 96(又名“小字体”)和 120(又名“大字体”)之外,win7 还提供了更多的 DPI 尺寸,这完全无法满足 VB6 表单子系统的要求。所以你可以安全地假设在 VB6 中像素大小是 15 或 12 缇。

    【讨论】:

    • 我认为你的回答是正确的,我学到了一些新东西谢谢!。我以与客户相同的分辨率将我的 dpi 重置为 120 dpi,我遇到了同样的现象。你能告诉我 vb6 ide 是否“强制”用户绘制宽度为 15 的倍数的表单,因为我从未有意识地计算出 11715 是 15 的倍数
    • IDE 会根据当前开发机器的字体大小将所有单位的大小(窗体的宽度/高度,控件的左/上)对齐为 15 或 12 的倍数,这可能会导致在客户端机器。将ScaleMode 更改为像素并不能缓解问题,而且表单的 with 和 height 总是以缇为单位。 ScaleMode 影响包含的控件左/上和窗体的缩放宽度/缩放高度。
    • 非常感谢,这是非常好的信息。为了像我昨天一样无知的人的利益,如果您有 96 dpi(每英寸点/像素),那么由于每英寸有 1440 缇,这意味着每点/像素有 1440/96 = 15 缇。
    猜你喜欢
    • 2019-01-20
    • 1970-01-01
    • 2021-10-02
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多