如何在分辨率不同的机器上安装程序,让程序自动适应?

snowerhuayun 2003-08-19 11:40:54
如何在分辨率不同的机器上安装程序,让程序自动适应?如何编程?
...全文
41 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihonggen0 2003-08-19
  • 打赏
  • 举报
回复
Resize 事件示例
本例在任何调整窗体大小时的时候,都将自动调整一个 TextBox 控件的大小以填充该窗体。要尝试这个例子,可以将代码粘贴到包含 TextBox 的窗体声明部分。 设置 TextBox 控件的 MultiLine 属性为 True,ScrollBars 属性为 3,BorderStyle 属性为 0,然后按F5键并调整窗体大小。

Private Sub Form_Load ()
Text1.Text = "" ' 清除文本。
End Sub

Private Sub Form_Resize ()
Text1.Move 0,0, ScaleWidth, ScaleHeight
End Sub
lihonggen0 2003-08-19
  • 打赏
  • 举报
回复
将上述的代码存为模块


屏幕调用如下:

Private Sub Form_Load()
ResizeInit Form1
End Sub

Private Sub Form_Resize()
ResizeForm Form1
End Sub

lihonggen0 2003-08-19
  • 打赏
  • 举报
回复
Option Explicit
Private FormOldWidth As Long
'`保存窗体的原始宽度
Private FormOldHeight 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

自由之眼 2003-08-19
  • 打赏
  • 举报
回复
其实,在不同的分辨率下的自适应
最大的问题是得到当前的分辨率
其实,可以得到screen.width和screen.hight得到当前分辨率

剩下的就简单了
叶帆 2003-08-19
  • 打赏
  • 举报
回复
在程序初始化时判断screen.Width/screen.TwipsPerPixelX 和screen.Height /screen.TwipsPerPixelY的值

然后在。。处理界面尺寸
Private Sub Form_Resize()

End Sub


fishtrees 2003-08-19
  • 打赏
  • 举报
回复
你的代码是针对窗体中的控件的吧?那么,窗体的大小怎么调节呢?

7,763

社区成员

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

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