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

VB6表单高度/宽度在命令行生成时被忽略,vb6,adapter,truncation,Vb6,Adapter,Truncation,我们正在尽快脱离VB6,但与此同时,我们已经开始从构建服务器上的命令行构建VB6应用程序 问题:生成服务器有一个基本视频适配器,导致窗体被截断为基本适配器的分辨率,而不是窗体本身的高度和宽度 我们发现的一种解决方法需要进入每个表单的加载事件,并在表单属性窗口中将高度和宽度属性手动设置为观察到的大小 啊 此应用程序中涉及许多表单,更多的应用程序中还将包含更多表单。我想建立一个脚本来处理这个问题 两个问题: 1) 在代码/项目/等中,我在哪里可以找到属性窗口中显示的表单的高度和宽度?搜索*.frm文

我们正在尽快脱离VB6,但与此同时,我们已经开始从构建服务器上的命令行构建VB6应用程序

问题:生成服务器有一个基本视频适配器,导致窗体被截断为基本适配器的分辨率,而不是窗体本身的高度和宽度

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

此应用程序中涉及许多表单,更多的应用程序中还将包含更多表单。我想建立一个脚本来处理这个问题

两个问题:

1) 在代码/项目/等中,我在哪里可以找到属性窗口中显示的表单的高度和宽度?搜索*.frm文件不会发现任何赢家;操作*.frx文件并将已知高度或宽度转换为十六进制(然后搜索)也不起作用

2) 除了编辑每一张表格,我还能做些什么吗

提前谢谢


Jon

基于属性窗口中显示的高度是一个计算值,包括表单的ClientHeight(在.frm中)+边框和标题栏高度。所以ClientHeight可能就是你要找的号码

基于属性窗口中显示的高度是一个计算值,包括表单的ClientHeight(在.frm中)+边框和标题栏高度。所以ClientHeight可能就是你要找的号码

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

例如:

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

我不知道您为什么会遇到这个问题-看起来很奇怪-但是如果您的生成服务器导致了问题,那么我看到的唯一选项是(1)更改生成服务器(或者升级视频卡),或者在加载事件中为每个表单写入代码,正如您所提到的,尽管如果在IDE中设置了position->center,这可能会影响表单的居中,但如果这是您想要的结果,请验证表单是否仍然居中。

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

例如:

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

我不知道您为什么会遇到这个问题-看起来很奇怪-但是如果您的生成服务器导致了问题,那么我看到的唯一选项是(1)更改生成服务器(或者升级视频卡),或者在加载事件中为每个表单写入代码,正如您所提到的,虽然如果在IDE中设置了position->center,这可能会影响表单的居中,但如果这是您想要的结果,请验证表单是否仍然居中。

高度和宽度存储在Twips(独立于设备的测量单位)中,因此,必须除以
Screen.twipperpixelx
Screen.twipperpixely
,才能得到正确的值。对于大多数显示器,这将是15。(使用Onnerd示例中的宽度,9960 twips为664像素。)

高度和宽度存储在twips(一种与设备无关的度量单位)中,因此必须除以
Screen.twipperpixelx
Screen.twipperpixely
,才能获得正确的值。对于大多数显示器,这将是15。(使用Onnerd示例中的宽度,9960 twips为664像素。)

FRM格式记录在VB6中。它说,高度和宽度存储在树枝上,正如愤怒的吉姆所观察到的。它没有解释ClientHeight和ClientWidth,但正如onerd和cmsjr所说,这是表单内部的大小(没有菜单栏和边框)。如果您有任何将StartupPosition设置为手动的表单,构建服务器也可能正在更改ClientLeft和ClientTop

不要在运行时设置窗体的高度和宽度。其中包括菜单栏和边框,它们在不同版本的窗口或具有不同主题的窗口上具有不同的厚度。所以你会买错尺寸的。改为设置ScaleHeight和ScaleWidth,它们是窗体内部的尺寸。VB6运行时根据这些值计算适当的高度和宽度


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

FRM格式记录在VB6中。它说,高度和宽度存储在树枝上,正如愤怒的吉姆所观察到的。它没有解释ClientHeight和ClientWidth,但正如onerd和cmsjr所说,这是表单内部的大小(没有菜单栏和边框)。如果您有任何将StartupPosition设置为手动的表单,构建服务器也可能正在更改ClientLeft和ClientTop

不要在运行时设置窗体的高度和宽度。其中包括菜单栏和边框,它们在不同版本的窗口或具有不同主题的窗口上具有不同的厚度。所以你会买错尺寸的。改为设置ScaleHeight和ScaleWidth,它们是窗体内部的尺寸。VB6运行时根据这些值计算适当的高度和宽度


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

根据他们的DPI设置,情况可能并非如此。因此,使用Screen.twipperpixelx和Screen.twipperpixely(如果需要像素宽度)来获取该数字。然而,在这种情况下,我相信客户的宽度/高度等