在VB中怎么实现整个界面的全屏操作呢?(窗体和控件都要按比例变化)

如题所述

Private FormOldWidth As Long
'原始宽度
Private FormOldHeight As Long
'原始高度
Private FormOldTop As Long
Private FormOldLeft As Long

'在调用ResizeForm前先调用本函数
Public Sub ResizeInit(FormName As Form)
Dim Obj As Control
FormOldWidth = FormName.ScaleWidth
FormOldHeight = FormName.ScaleHeight
On Error Resume Next
For Each Obj In FormName
Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " "
Next Obj
On Error GoTo 0
End Sub

'按比例改变表单内各元件的大小,
'在调用ReSizeForm前先调用ReSizeInit函数
Public Sub ResizeForm(FormName As Form)
Dim Pos(4) As Double
Dim i As Long, TempPos As Long, StartPos As Long
Dim Obj As Control
Dim ScaleX As Double, ScaleY As Double

ScaleX = FormName.ScaleWidth / FormOldWidth
'保存窗体宽度缩放比例
ScaleY = FormName.ScaleHeight / FormOldHeight
'保存窗体高度缩放比例
On Error Resume Next
For Each Obj In FormName
StartPos = 1
For i = 0 To 4
'读取控件的原始位置与大小

TempPos = InStr(StartPos, Obj.Tag, " ", vbTextCompare)
If TempPos > 0 Then
Pos(i) = Mid(Obj.Tag, StartPos, TempPos - StartPos)
StartPos = TempPos + 1
Else
Pos(i) = 0
End If
'根据控件的原始位置及窗体改变大小
'的比例对控件重新定位与改变大小
Obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
Next i
Next Obj
On Error GoTo 0
End Sub
Private Sub Command1_Click()
If Command1.Caption = "全屏" Then
FormOldWidth = Me.Width
FormOldHeight = Me.Height
FormOldTop = Me.Top
FormOldLeft = Me.Left
Me.Height = Screen.Height + 450
Me.Width = Screen.Width + 150
Me.Top = -450
Me.Left = -100
Command1.Caption = "还原"
Else
Me.Height = FormOldHeight
Me.Width = FormOldWidth
Me.Top = FormOldTop
Me.Left = FormOldLeft
Command1.Caption = "全屏"
End If
End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub Form_Load()
Call ResizeInit(Me) '在装入时必须加入
Command1.Caption = "全屏"
End Sub

Private Sub Form_Resize()
Call ResizeForm(Me) '控件随之改变
End Sub追问

初步程序是可以运行的,不过我在调试过程中,一个form中含有多个控件,此时有界面就没有显示出来,且其中一部分的比例,处理不完全

追答

因为有些控件的大小本来就是不会改变的。恐怕也只能做到这样子了。你可以根据需要调整一些数据。如果把窗体变成大小不可调,仅能全屏和恢复可能就好了。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-02
vb.net 直接设置控件的相关属性就可以了。VB6的话就得自己写方法来实现
第2个回答  2012-02-02
一般软件都不会这么做追问

我见过在VB中有这样实现的,有可能是我描述的不够清楚,请问在VB中用按键控制的全屏操作怎么实现呢?

追答

Private Sub Command1_Click()
Me.WindowState = vbMaximized
End Sub

第3个回答  2012-02-02
我做出来了,留下邮箱,我发给你追问

非常感谢,邮箱是nan507mm@126.com

追答

已发送,请查收

追问

非常感谢你的程序,不过还是存在问题,就是有些控件在最大化的情况下,其位置不会相应的变化,请问这个需要怎么处理呢?

追答

我给你发的那个,控件的位置是变化的。把你的源文件发到我的邮箱,我看一下

追问

程序就是你给的程序,我只是在窗体上加入了几个combo,发现其大小可以改变,但是其具体的位置不能改变

追答

加入一个图片框,然后将combo剪切到图片框,就行了
或者将dragmode属性改为自动

追问

前面一种方法可以了,不过后面一种将combo的dragmode属性改为自动还是不能实现
然后对于线条啊,图片啊,使用加入图片框的方法还是不能实现。
真的非常感谢你

追答

又已发送,见邮箱

追问

我发你邮箱了 帮忙看看啊 谢谢

本回答被提问者采纳

在VB中怎么实现整个界面的全屏操作呢?(窗体和控件都要按比例变化)
ScaleX = FormName.ScaleWidth \/ FormOldWidth '保存窗体宽度缩放比例 ScaleY = FormName.ScaleHeight \/ FormOldHeight '保存窗体高度缩放比例 On Error Resume Next For Each Obj In FormName StartPos = 1 For i = 0 To 4 '读取控件的原始位置与大小 TempPos = InStr(StartPos, Obj.Tag, " ...

VB怎么让窗口改变大小时控件也按比例改变大小?
可以用窗体的Resize事件来实现,改变窗体大小时,控件大小跟窗体成比例,不过如果最小化的时候就会出错,所以还得把最小化的事件给去了,代码如下:\\x0d\\x0aPrivate Sub Form_Resize()\\x0d\\x0aIf Me.WindowState 1 Then '如果不是最小化\\x0d\\x0aCommand1.Width = Me.Width \/ 5 '按钮宽...

vb.net 怎样将窗体和所有控件根据电脑分辨率固定?
Int(Me.Height \/ 初始化控件自动大小调整与窗口的高度比例)) '更改控件的大小 按第一次窗口的比例 进行调整 显示控件的位置坐标() End Sub Private Sub 显示控件的位置坐标() Label1.Text = "控件的上边距坐标: " & 控件自动大小调整.Top Label2.Text = "控件的左边距坐标: "...

VB6.0做的软件怎么全屏显示,而且要遮住开始菜单?
Private Sub Form_Resize() '拖动窗体时 Call ResizeForm(Me) '确保窗体改变时控件随之改变 If Me.WindowState = 0 Then Me.Left = 0 Me.Top = 0 Me.Height = Screen.Height Me.Width = Screen.Width End If End Sub Private Sub Form_Unload(Cancel As Integer) '卸载窗体时显示任务...

vb做的界面,当分辨率变化时,想让界面和控件都跟着相应比例变化
比如一个按钮,要让他在各种分辨率下居中,并且窗体根着屏幕变化而变化,则要用一个timer控件 dim scr as integer private sub form1_load()timer1.interval=500 Me.ScaleMode = 3 scr=screen.width end sub private timer1_timer()if scr<>screen.width then me.height=screen.height*0.8 me....

vb.net 现在做的是管理软件,但是画面不是全屏的,我现在要把每个画面变...
先计算好每个控件的左侧和上面离form边缘的距离,算出它比form大小的比例,在form的resize时间中按比例加减。比如有个Button1,左侧是100,上面是100,窗体长、宽200,那么在form的resize事件中添加:Button1.Location = New Size(Me.Size.X * 0.5 , Me.Size.Y * 0.5)...

vb.net 怎样将窗体和所有控件根据电脑分辨率固定?
使用SplitContainer1控件不就行了,SplitContainer1控件的Fixedpanel属性设置为Panel1\\x0d\\x0aSplitContainer1的Panel2里面再放置一个SplitContainer2\\x0d\\x0aSplitContainer2控件的Fixedpanel属性设置为Panel2\\x0d\\x0a二个SplitContainer设置为水平折为器方向\\x0d\\x0a至于播放器控件就放在SplitContainer2...

vb程序如何全屏运行??
给你个建议,你可以做到当你的程序运行的时候,将桌面分辨先记录下,然后改成800x600,这样你的程序就可以全屏运行了,当你的程序被最小化或退出的时候,再把分辨率改回原来的就可以了!修改分辨率的VB代码,网上到处都有,如果其它问题,欢迎给我发消息!

vb如何用代码实现全屏与非全屏的转换
Command1.Caption = "全屏"Form1.WindowState = 0 End If End Sub 然后在窗体的resize事件中,把flash的高和宽都改一下 如果flash控件的名称为fla 那么在resize中加入如下代码 with fla .left=0 .top=0 .height=me.height .width=me.width end with 这样就可以实现在窗口最大化的时候,flash也...

vb语言中怎么使窗体和窗体里的控件同时放大缩小?
思路在form1的load和resize里设置每个控件的长宽,都用form1的长宽表示,比如command1.width=1\/20*me.width 这样当当窗体宽度改变后按钮的宽度始终是它的1\/20高度类同

相似回答