您的位置:程序门 -> vb -> 控件



窗体内控件大小随窗体变化而变化。


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


窗体内控件大小随窗体变化而变化。
发表于:2007-11-22 10:45:23 楼主
寻求---窗体内控件大小随窗体变化而变化的代码,
鼠标拉动窗体变大或变小,窗体内控件也随着变大或变小。
发表于:2007-11-22 11:09:131楼 得分:0
哈   你弄好了记得传我一份啊!thank   you!
发表于:2007-11-22 11:39:302楼 得分:0
可以尝试根据比例计算来实现
发表于:2007-11-23 10:57:003楼 得分:0
这个我以前也找过的,用resize32.ocx控件就可以了,它会自动根据窗体大小而调整窗体控件大小,如果你需要这个控件,我可以发给你的
发表于:2007-11-23 12:35:044楼 得分:0
发我一份   thank   you!dtt_1123@hotmail.com
发表于:2007-11-23 13:26:405楼 得分:0
婷婷,已经发到你邮箱了,看看吧
发表于:2007-11-23 13:29:376楼 得分:0
我的信箱是wenlian_xu666@126.com,请楼上给我发一份。
发表于:2007-11-23 13:58:307楼 得分:0
已经发到你邮箱了
发表于:2007-11-23 14:32:188楼 得分:0
thank   you!很好用。
发表于:2007-11-23 15:22:499楼 得分:0
好使!
ok,   thanks!
发表于:2007-11-23 20:27:1710楼 得分:0

vbscript code
private sub form_resize() command1.height =scaleheight* 0.1'0.1为百分比 scaleheight和scalewidth为当前窗口的大小属性 end sub
发表于:2007-12-05 11:36:0611楼 得分:0
10楼的朋友,请问一下
我在修改第三方提供的控件大小时候,是按照你说的方法做的。
  例如:tocctrl.height   =   form1.scaleheight   -   statusbar.height

可是我发现当把主窗体form最小化的时候有错误。
应该是这时候form1.scaleheight   =0的原因。
加个form1.scaleheight <> 0的条件控制,可以解决这个问题。
但是同时有产生一个新问题,主窗体初始化的时候,控件大小又有问题
发表于:2007-12-05 11:50:5412楼 得分:0
下面代码可以实现,不过有缺陷
public   formoldwidth           as   long                   '保存窗体的原始宽度
public   formoldheight           as   long               '保存窗体的原始高度
 

private   sub   form_resize()

                    resizeform   me
    end   sub
private   sub   form_load()           '加载系统

        resizeinit   me                   '自动改变控件大小
end   sub

  '在调用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
            '在调试时如果出现除数为零错误,是因为没有设定form的初值,请双击form1然后再测试,这个问题绝对不会在编译好的程序中出现
            if   formoldwidth   =   0   then                       '防止该错误的产生
                    exit   sub
            end   if
            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
       
 
发表于:2007-12-06 10:06:5113楼 得分:0
12#楼的,我在网上也找到这个,但是加到程序中对vb自带的有些控件不知为什么不起作用,而且像msflexgrid这个右边显示的空白太多了,不知有何更好办法?


快速检索

最新资讯
热门点击