VB6 求助:如何让三个子窗体适应不同屏幕分辨率

ajunajun 2017-03-22 04:44:31
我写的程序有三个子窗体,运行时同时显示三个子窗体(已分上中下平铺显示),设置了三个子窗体的高度加起来填满主窗体空白区域的高度,代码如下:

'Form1子窗体,窗体名称为MainForm
Private Sub Form_Resize()
If WindowState = 0 Then
Width = Screen.Width
Height = 0.3 * Screen.Height
End If
End Sub

'Form2子窗体,窗体名称为MonitorResultForm
Private Sub Form_Load()
'将仪器列表中Listview1中的列表同步到MSFlexGrid1中
Call ListviewToMSFlexGrid1
'计算该窗体的位置
Me.Top = MainForm.Height
Me.Left = 0
End Sub

Private Sub Form_Resize()
If WindowState = 0 Then
Width = Screen.Width
Height = 0.3 * Screen.Height
End If
End Sub

'Form3子窗体,窗体名称为MonitorProcess
Private Sub Form_Load()
'计算该窗体的位置
Me.Top = MainForm.Height + MonitorResultForm.Height
Me.Left = 0
End Sub

Private Sub Form_Resize()
If WindowState = 0 Then
Width = Screen.Width
Height = 0.255 * Screen.Height
End If
End Sub

说明:
在主窗体中还有工具栏和状态栏,我这里还没有减去它们的高度,可以先不用管。
Form1窗体中是一个Listviw控件,每一列的宽度都在代码中指定了
Form2窗体中是一个MSFlexGrid控件,每一列的宽度都在代码中指定了
Form3窗体中是三个RichTextBox控件,三个RichTextBox的宽度加起来等于现在屏幕的宽度
现在的情况是:
到低分辨率的屏幕宽度上都显示不全。
请教:
有什么办法让三个子窗体的宽度适应不同的屏幕?Listviw、MSFlexGrid、RichTextBox中的文字可以随屏幕的大小改变?三个子窗体的高度还是加起来填满主窗体空白区域的高度。
网上找了很多代码都不行,怎么办啊?
...全文
205 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2017-03-23
  • 打赏
  • 举报
回复
同一个老师的作业:vb 子窗体水平平铺问题
x287634334 2017-03-23
  • 打赏
  • 举报
回复
Form_Resize事件里调整控件大小。
ajunajun 2017-03-23
  • 打赏
  • 举报
回复
我已经解决了 子窗体的load事件中加一下代码,等于按比例缩小

'使ListView1列表框适应不同屏幕的宽度,现屏幕宽度为25200
ListView1.Width = 25155 * (Screen.Width / 25200) '25155为现ListView1的宽度
    
'根据屏幕分辨率调整列表中文字大小
Dim ScreenScale
ScreenScale = Format(Screen.Width / 25200, "0.00")  '计算新屏幕分辨率与现屏幕分辨率的比例,根据比例调整字体大小
If ScreenScale < 0.87 And ScreenScale >= 0.77 Then
    ListView1.Font.SIZE = 8    '8号字体
ElseIf ScreenScale < 0.77 And ScreenScale > 0.61 Then
    ListView1.Font.SIZE = 7
ElseIf ScreenScale <= 0.61 Then
    ListView1.Font.SIZE = 6
End If
'添加仪器列表头部分
    ListView1.ColumnHeaders.Add , "Column1", "", 380 * (Screen.Width / 25200)
    ListView1.ColumnHeaders.Add , "Column2", "序号", 600 * (Screen.Width / 25200), lvwColumnCenter
'……
灌水有分,明天结贴。。。
王二.麻子 2017-03-23
  • 打赏
  • 举报
回复
主窗体是mdiform吧?子窗体的mdichild是true吧? 你想得到主窗体的用户空间,然后调整子窗体的top,left?直接用MDIForm1.ScaleWidth,ScaleHeight属性就可以了。 如果住窗体有菜单栏,工具栏,状态栏会出问题。 现在的计算机上没有工具栏,状态栏的控件了,没试验了
Tiger_Zhao 2017-03-23
  • 打赏
  • 举报
回复
子窗体的Form_Resize()中调整控件宽度。
你的控件都有滚动条的,有什么好担心的。
你再提供一个设置,让用户指定字体的大小。
由用户自己决定到底是缩小字体保证全显示、还是使用滚动条保证字体的可分辨度。
ajunajun 2017-03-23
  • 打赏
  • 举报
回复
呵呵,是同一个软件,水平平铺我已经解决了,这个是为了适应不同屏幕分辨率,不一样
vansoft 2017-03-22
  • 打赏
  • 举报
回复
为什么要算? 直接调用子窗体平铺命令不好吗?

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧