VB6表单高度/宽度被命令行生成忽略

问题描述 投票:1回答:4

我们将尽可能快地移出VB6,但是与此同时,我们已经开始从命令行在Build Server上构建VB6应用程序。

问题:构建服务器具有基本的视频适配器,并导致表单被截断为基本适配器的分辨率,而不是表单本身的高度和宽度。

我们发现的一种解决方法需要进入每个表单的加载事件,并在“表单属性”窗口中将“高度”和“宽度”属性手动设置为观察到的大小。

U ..

此应用程序涉及许多表格,更多的应用程序将包含数十种表格。我想构建一个脚本来处理此问题。

两个问题:

1)如“属性”窗口中所示,在代码/项目/ etc中的何处可以找到表单的高度和宽度?搜索* .frm文件不会显示任何赢家;都不使用* .frx文件并将已知的Height或Width转换为Hex(然后搜索)。

2)除了编辑每个表格之外,我还能做其他事情吗?

提前感谢。

Jon

vb6 adapter truncation
4个回答
3
投票

FRM格式记录在VB6 manual中。如愤怒的吉姆(Angry Jim)所言,它的高度和宽度存储在Twips中。它没有解释ClientHeight和ClientWidth,但是正如OneNerd和cmsjr所说的,这就是表单内部的大小(没有菜单栏和边框)。如果您具有将StartupPosition设置为manual的任何表单,则构建服务器也可能会更改ClientLeft和ClientTop。

永远不要在运行时设置表单的高度和宽度。这些包括菜单栏和边框,它们在不同版本的Windows上或在不同主题下的厚度不同。因此,您将得到错误的尺寸。改为设置ScaleHeight和ScaleWidth,它们是表单内部的尺寸。 VB6运行时从中计算出合适的高度和宽度。

最后,只需购买新的构建服务器(或新的视频卡)。带领所有开发人员到老板挥舞着火把和干草叉,或者只是冷静地解释一下PC成本和开发人员时间成本之间的区别。


2
投票

如果您在记事本或任何纯文本编辑器中打开.frm文件,则表单大小从顶部开始几行定义:

例如:

 ClientHeight    =   8445
 ClientLeft      =   60
 ClientTop       =   450
 ClientWidth     =   9960

我不确定您为什么会遇到此问题-似乎很奇怪-但是如果您的构建服务器引起了问题,那么我看到的唯一选择是(1)更改构建服务器(或也许升级视频卡),或者如您所提到的,为每个表单在load事件中编写代码,尽管如果您在IDE中设置了postion-> center,则可能会影响表单的居中,因此请验证表单是否居中所需的结果。


0
投票

基于this,我想说的是,在属性窗口中看到的高度是一个计算值,其中包括表单的ClientHeight(位于.frm中)+边框和标题栏的高度。因此,ClientHeight可能是您要查找的数字。


0
投票

高度和宽度以Twips(与设备无关的度量单位)存储,因此必须除以Screen.TwipsPerPixelXScreen.TwipsPerPixelY才能获得正确的值。对于大多数显示器,该值为15。(在OneNerd的示例中,宽度为9960缇为664像素。)

© www.soinside.com 2019 - 2024. All rights reserved.