求助!Form的resize?

Sunny_luy 2002-06-28 04:08:58
我的表单中有一个treeview 和一个listview控件,当更改了Form的大小时,使这两个控件能随表单一起变,就如同NT的用户管理器一样?且当mouse置于他俩之间时,可以随意动态改变他们的相对大小?
...全文
123 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
weikunlun 2002-06-28
  • 打赏
  • 举报
回复
`-从外接程序菜单选择外接程序管理器,加载应用程序向导,在选择应用程序向导下一步,选择资源管理器,即可看到例子
GANXIAOPENG 2002-06-28
  • 打赏
  • 举报
回复
TO :ypyao85()

我是从程序中直接拷的了!没有删除多余的东西了!
SORRY!:)

主要就是 TypeOf MyCon Is “控件类型” 了!
浮云 2002-06-28
  • 打赏
  • 举报
回复
GANXIAOPENG(种菜的)
没有搞错吗?
不需要这么复杂。
Sunny_luy 2002-06-28
  • 打赏
  • 举报
回复
谢谢各位,我正在实践你们的想法,一会再给你们加分
GANXIAOPENG 2002-06-28
  • 打赏
  • 举报
回复
第一个 问题:

Dim FrmW As Single '存放改变前的窗体的宽度
Dim frmH As Single '存放改变前的窗体的高度

Private Sub Form_Load()
If WindowState <> vbMinimized Then
FrmW = Me.Width
frmH = Me.Height
'上面两句是初始化模块变量
End If
End Sub

Private Sub Form_Resize()
If FrmW = 0 Or frmH = 0 Then Exit Sub

Dim MyCon As Control
Dim sig1 As Single, sig2 As Single
sig1 = Me.Width / FrmW
sig2 = Me.Height / frmH
For Each MyCon In Me.Controls
If TypeOf MyCon Is Label Or _
TypeOf MyCon Is CommandButton Or _
TypeOf MyCon Is ListView Or _
TypeOf MyCon Is TextBox Or _
TypeOf MyCon Is Toolbar Or _
TypeOf MyCon Is SSTab Or _
TypeOf MyCon Is PictureBox Or _
TypeOf MyCon Is CheckBox Or _
TypeOf MyCon Is OptionButton Or _
TypeOf MyCon Is Frame Then

With MyCon
' MsgBox .Name
.Left = Int(.Left * sig1)
.Top = Int(.Top * sig2)
.Width = Int(.Width * sig1)
.Height = Int(.Height * sig2)
End With

End If
Next MyCon

For Each MyCon In Me.Controls
If TypeOf MyCon Is ComboBox Then
With MyCon
.Left = Int(.Left * sig1)
.Top = Int(.Top * sig2)
.Width = Int(.Width * sig1)
End With
End If
Next MyCon

FrmW = Me.Width
frmH = Me.Height

End Sub
GANXIAOPENG 2002-06-28
  • 打赏
  • 举报
回复
第一个 问题:

Dim FrmW As Single '存放改变前的窗体的宽度
Dim frmH As Single '存放改变前的窗体的高度

Private Sub Form_Load()
If WindowState <> vbMinimized Then
FrmW = Me.Width
frmH = Me.Height
'上面两句是初始化模块变量
End If
End Sub

Private Sub Form_Resize()
If FrmW = 0 Or frmH = 0 Then Exit Sub

Dim MyCon As Control
Dim sig1 As Single, sig2 As Single
sig1 = Me.Width / FrmW
sig2 = Me.Height / frmH
For Each MyCon In Me.Controls
If TypeOf MyCon Is Label Or _
TypeOf MyCon Is CommandButton Or _
TypeOf MyCon Is ListView Or _
TypeOf MyCon Is TextBox Or _
TypeOf MyCon Is Toolbar Or _
TypeOf MyCon Is SSTab Or _
TypeOf MyCon Is PictureBox Or _
TypeOf MyCon Is CheckBox Or _
TypeOf MyCon Is OptionButton Or _
TypeOf MyCon Is Frame Then

With MyCon
' MsgBox .Name
.Left = Int(.Left * sig1)
.Top = Int(.Top * sig2)
.Width = Int(.Width * sig1)
.Height = Int(.Height * sig2)
End With

End If
Next MyCon

For Each MyCon In Me.Controls
If TypeOf MyCon Is ComboBox Then
With MyCon
.Left = Int(.Left * sig1)
.Top = Int(.Top * sig2)
.Width = Int(.Width * sig1)
End With
End If
Next MyCon

FrmW = Me.Width
frmH = Me.Height

End Sub
浮云 2002-06-28
  • 打赏
  • 举报
回复
dsclub(▁▂▃▄▅▆▇█ 騩鹬) 说得对。
2仔细观察一下别人的软件,大多数是这样做的,只需要加一个PictureBox控件,改成长条形。
在picturebox的MouseDown,MouseUp,MouseMove事件中加入一些代码,如mouseDown中加入判断,只有按下鼠标才能拖动,
mouseMove中加入判断函数,主要是鼠标的位置,
mouseUp中把PictureBox的位置放在你想要的位置,再调整TreeView,ListView的位置,大小
dsclub 2002-06-28
  • 打赏
  • 举报
回复
1、在Form的resize事件里响应treeview 和listview控件的height、width的值与form的height、width的函数关系就行了。如果没有其他的东西,两控件宽、高之和等于窗体的宽、高。

2、好像有个这样的控件,其实自己编写也不难呀,还是响应鼠标事件中treeview 和listview控件的width的值之间的函数关系(这是窗体的大小不变,两个之和为窗体的和)。
Laney 2002-06-28
  • 打赏
  • 举报
回复
你得到form的大小,再按照一定的比例改变控件的height和width,就行了
Sunny_luy 2002-06-28
  • 打赏
  • 举报
回复
我现在已经知道了Form的Width,Height,ScaleWidth,ScaleHeight的属性,
有什么编程思路吗?烦高手指点!!
Laney 2002-06-28
  • 打赏
  • 举报
回复
得到窗体的大小,再按比例改变treeview和listview的heigh和width属性就行了
ukyoyj 2002-06-28
  • 打赏
  • 举报
回复
要自己编程.

7,763

社区成员

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

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