CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  控件

紧急求救!!!谁有窗体中控件自动随窗体变化大小的控件??????(或提供地址)

楼主rehuo(热火)2000-12-15 14:43:00 在 VB / 控件 提问

问题点数:20、回复次数:3Top

1 楼zkfly(KK)回复于 2000-12-15 14:46:00 得分 0

好像你老哥有电懒也,自己写不是很简单吗。  
  Top

2 楼CHENJIN(CHENJIN)回复于 2000-12-15 15:12:00 得分 20

试试这个,包你满意。  
  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    
   
  Private   Sub   Form_Load()    
  Call   ResizeInit(Me)   `在程序装入时必须加入    
  End   Sub    
   
  Private   Sub   Form_Resize()    
  Call   ResizeForm(Me)   `确保窗体改变时控件随之改变    
  End   Sub    
   
  Top

3 楼rehuo(热火)回复于 2000-12-18 02:57:00 得分 0

to   CHENJIN  
  你好!  
  很感谢你的程序,但是在实际运行时,运行速度有点慢(如果窗体上控件比较多时),并且有时会原先已设计好的顺序打乱,本来在一行的控件,变化以后可能不在一行了。还盼多多指教。。。Top

相关问题

  • Form 控件与窗体大小问题
  • 怎样让控件大小跟随窗体大小变化?
  • 怎样让窗体上的控件随窗体的大小同时变化啊??
  • 怎样让窗体内的控件随窗体的大小变化而变化?
  • 如何让窗体中控件自动随窗体变化大小
  • Winform窗体中的控件怎么随窗体的尺寸大小改变
  • 如何使控件随着窗体大小改变控件大小?急!!!
  • 关于窗体改变大小时控件的位置变化??
  • MSFlexGrid控件如何随窗体改变大小?
  • 怎样改变窗体中控件的大小?

关键词

  • 控件
  • 窗体
  • formname
  • formoldwidth
  • formoldheight
  • resizeform
  • 调用
  • 大小
  • 保存
  • obj

得分解答快速导航

  • 帖主:rehuo
  • CHENJIN

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo