怎样能够动态的修改窗口中控件的大小(急!)
当窗口的大小发生改变时,如何能够动态的改变窗口中控件的大小,是控件保持原有的比例(最好能提供代码) 问题点数:100、回复次数:9Top
1 楼liaolwj(风儿)回复于 2003-06-03 22:52:55 得分 10
你在窗口的resize事件中编写
dw_1.width = newwidth
....Top
2 楼joss(季节...夏至)回复于 2003-06-03 22:58:01 得分 20
动态实现调整控件大实施步骤:
功能:
当窗口大小调整时,窗口内的控件包括Tab控件和UserObject控件内的控件将随窗口大小的变化按比例自动进行缩放。
设计说明:
提出问题
目前,为了通用性,大多数PB应用程序是在640x480或800x600显示分辨率模式下设计的,由于种种原因,用户经常使用其它的显示分辨率。当分辨率从640x480调整到800x600或1024x768时,应用窗口相对缩小,为了充分利用屏幕空间而将窗口最大化后,窗口内控件的尺寸、位置是固定的,并且集中到窗口的左上角,既不美观,又浪费了宝贵的屏幕空间。
了解控件
PowerBuilder是一种面向对象的开发工具,除SystemFunctions类外,所有对象均由祖先类PowerObject继承而来。PowerObject有九种子类,窗口内所有控件均继承自PowerObject\GraphicObject\WindowObject,该类派生出两种子类:DrawObject和DragObject。DrawObject类是画图对象,属于该类的控件有:线段、椭圆、矩形和园角矩形,其余控件均属于DragObject类。
由于DrawObject控件在应用程序中使用得比较少,因此,为了简化程序,本软件仅对DragObject控件进行自动缩放。
实现原理
PowerBuilder的窗口对象有一个非常重要的属性-control[]数组,存储了窗口内放置的所有控件。通过这个数组,可以访问各控件的属性。但窗口的control[]数组并不存储放在Tab控件和UserObject控件内部的控件,它们存储在Tab控件和UserObject控件各自的control[]数组中。
在窗口的open事件中,通过其control[]数组,找出在窗口内放置的全部DragObject类控件(当遇到Tab控件和UserObject控件时,继续通过它们各自的control[]数组,找出其内部的全部DragObject类控件),保存所有找到的控件的原始x、y、width和height属性数据与当前窗口原始宽度和高度的比例值。当窗口大小调整时,在resize事件中,根据保存的各控件的比例值重置控件的x、y、width和height属性,从而实现控件随窗口大小的变化自动按比例放大或缩小。
脚本写在窗口的resize事件中,也可以自定义事件在程序中动态调用!
Top
3 楼cyactiveboy((冷酷有情))回复于 2003-06-04 01:06:20 得分 10
先在OPEN事件里取出各个控件的比例,可以放在TAG中,做一个函数能对各种控件算出相应的高度和宽度,然后在RESIZE事件里调用该函数。具体的代码Top
4 楼cyactiveboy((冷酷有情))回复于 2003-06-04 01:12:17 得分 30
还好找到了以前的一些代码。
在RISIZE事件里写入:
Integer li_controls,i
String ls_xbl,ls_ybl,ls_wbl,ls_hbl
This.Setredraw(false)
li_controls=upperbound(This.Control[])
FOR i=1 TO li_controls
CHOOSE CASE This.Control[i].TypeOf()
CASE checkbox!
icbx_obj=This.control[i]
of_getbl(icbx_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
icbx_obj.x=newwidth*real(ls_xbl)
icbx_obj.y=newheight*real(ls_ybl)
CASE radiobutton!
irb_obj=This.control[i]
of_getbl(irb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
irb_obj.x=newwidth*real(ls_xbl)
irb_obj.y=newheight*real(ls_ybl)
CASE commandbutton!
icb_obj=This.control[i]
of_getbl(icb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
icb_obj.x=newwidth*real(ls_xbl)
icb_obj.y=newheight*real(ls_ybl)
icb_obj.width=newwidth*real(ls_wbl)
icb_obj.height=newheight*real(ls_hbl)
CASE picture!
ip_obj=This.control[i]
of_getbl(ip_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
ip_obj.x=newwidth*real(ls_xbl)
ip_obj.y=newheight*real(ls_ybl)
ip_obj.width=newwidth*real(ls_wbl)
ip_obj.height=newheight*real(ls_hbl)
CASE datawindow!
idw_obj=This.control[i]
of_getbl(idw_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
idw_obj.x=newwidth*real(ls_xbl)
idw_obj.y=newheight*real(ls_ybl)
idw_obj.width=newwidth*real(ls_wbl)
idw_obj.height=newheight*real(ls_hbl)
CASE dropdownlistbox!
iddlb_obj=This.control[i]
of_getbl(iddlb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
iddlb_obj.x=newwidth*real(ls_xbl)
iddlb_obj.y=newheight*real(ls_ybl)
iddlb_obj.width=newwidth*real(ls_wbl)
CASE dropdownpicturelistbox!
iddplb_obj=This.control[i]
of_getbl(iddplb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
iddplb_obj.x=newwidth*real(ls_xbl)
iddplb_obj.y=newheight*real(ls_ybl)
iddplb_obj.width=newwidth*real(ls_wbl)
CASE listbox!
ilb_obj=This.control[i]
of_getbl(ilb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
ilb_obj.x=newwidth*real(ls_xbl)
ilb_obj.y=newheight*real(ls_ybl)
ilb_obj.width=newwidth*real(ls_wbl)
ilb_obj.height=newheight*real(ls_hbl)
CASE multilineedit!
imle_obj=This.control[i]
of_getbl(imle_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
imle_obj.x=newwidth*real(ls_xbl)
imle_obj.y=newheight*real(ls_ybl)
imle_obj.width=newwidth*real(ls_wbl)
imle_obj.height=newheight*real(ls_hbl)
CASE editmask!
iem_obj=This.control[i]
of_getbl(iem_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
iem_obj.x=newwidth*real(ls_xbl)
iem_obj.y=newheight*real(ls_ybl)
iem_obj.width=newwidth*real(ls_wbl)
iem_obj.height=newheight*real(ls_hbl)
CASE tab!
it_obj=This.control[i]
of_getbl(it_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
it_obj.x=newwidth*real(ls_xbl)
it_obj.y=newheight*real(ls_ybl)
it_obj.width=newwidth*real(ls_wbl)
it_obj.height=newheight*real(ls_hbl)
CASE groupbox!
igb_obj=This.control[i]
of_getbl(igb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
igb_obj.x=newwidth*real(ls_xbl)
igb_obj.y=newheight*real(ls_ybl)
igb_obj.width=newwidth*real(ls_wbl)
igb_obj.height=newheight*real(ls_hbl)
CASE hscrollbar!
ihsb_obj=This.control[i]
of_getbl(ihsb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
ihsb_obj.x=newwidth*real(ls_xbl)
ihsb_obj.y=newheight*real(ls_ybl)
ihsb_obj.width=newwidth*real(ls_wbl)
ihsb_obj.height=newheight*real(ls_hbl)
CASE picturebutton!
ipb_obj=This.control[i]
of_getbl(ipb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
ipb_obj.x=newwidth*real(ls_xbl)
ipb_obj.y=newheight*real(ls_ybl)
ipb_obj.width=newwidth*real(ls_wbl)
ipb_obj.height=newheight*real(ls_hbl)
CASE listview!
ilv_obj=This.control[i]
of_getbl(ilv_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
ilv_obj.x=newwidth*real(ls_xbl)
ilv_obj.y=newheight*real(ls_ybl)
ilv_obj.width=newwidth*real(ls_wbl)
ilv_obj.height=newheight*real(ls_hbl)
CASE picturelistbox!
iplb_obj=This.control[i]
of_getbl(iplb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
iplb_obj.x=newwidth*real(ls_xbl)
iplb_obj.y=newheight*real(ls_ybl)
iplb_obj.width=newwidth*real(ls_wbl)
iplb_obj.height=newheight*real(ls_hbl)
CASE singlelineedit!
isle_obj=This.control[i]
of_getbl(isle_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
isle_obj.x=newwidth*real(ls_xbl)
isle_obj.y=newheight*real(ls_ybl)
isle_obj.width=newwidth*real(ls_wbl)
isle_obj.height=newheight*real(ls_hbl)
CASE treeview!
itv_obj=This.control[i]
of_getbl(itv_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
itv_obj.x=newwidth*real(ls_xbl)
itv_obj.y=newheight*real(ls_ybl)
itv_obj.width=newwidth*real(ls_wbl)
itv_obj.height=newheight*real(ls_hbl)
CASE userobject!
iuo_obj=This.control[i]
of_getbl(iuo_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
iuo_obj.x=newwidth*real(ls_xbl)
iuo_obj.y=newheight*real(ls_ybl)
iuo_obj.width=newwidth*real(ls_wbl)
iuo_obj.height=newheight*real(ls_hbl)
CASE vscrollbar!
ivsb_obj=This.control[i]
of_getbl(ivsb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
ivsb_obj.x=newwidth*real(ls_xbl)
ivsb_obj.y=newheight*real(ls_ybl)
ivsb_obj.width=newwidth*real(ls_wbl)
ivsb_obj.height=newheight*real(ls_hbl)
CASE graph!
igr_obj=This.control[i]
of_getbl(igr_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
igr_obj.x=newwidth*real(ls_xbl)
igr_obj.y=newheight*real(ls_ybl)
igr_obj.width=newwidth*real(ls_wbl)
igr_obj.height=newheight*real(ls_hbl)
CASE olecontrol!
iole_obj=This.control[i]
of_getbl(iole_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
iole_obj.x=newwidth*real(ls_xbl)
iole_obj.y=newheight*real(ls_ybl)
iole_obj.width=newwidth*real(ls_wbl)
iole_obj.height=newheight*real(ls_hbl)
CASE richtextedit!
irte_obj=This.control[i]
of_getbl(irte_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
irte_obj.x=newwidth*real(ls_xbl)
irte_obj.y=newheight*real(ls_ybl)
irte_obj.width=newwidth*real(ls_wbl)
irte_obj.height=newheight*real(ls_hbl)
CASE statictext!
ist_obj=This.control[i]
of_getbl(ist_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
ist_obj.x=newwidth*real(ls_xbl)
ist_obj.y=newheight*real(ls_ybl)
ist_obj.width=newwidth*real(ls_wbl)
CASE line!
iln_obj=This.control[i]
of_getbl(iln_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
iln_obj.beginx=newwidth*real(ls_xbl)
iln_obj.beginy=newheight*real(ls_ybl)
iln_obj.endx=newwidth*real(ls_wbl)
iln_obj.endy=newheight*real(ls_hbl)
END CHOOSE
NEXT
This.Setredraw(true)
需增加一个of_getbl()函数:
String ls_bl[],ls_buff
Integer li_len,i
IF vs_blstr='' OR isnull(vs_blstr) THEN RETURN
i=1
ls_buff=vs_blstr
li_len=len(ls_buff)
DO WHILE Pos(ls_buff,'/')<>0
ls_bl[i]=Left(ls_buff,Pos(ls_buff,'/') - 1)
i++
li_len=Len(ls_buff)
ls_buff=Right(ls_buff,li_len - (Pos(ls_buff,'/')))
LOOP
IF Trim(ls_buff)='' THEN
i=i - 1
ELSE
ls_bl[i]=ls_buff
END IF
rs_xbl=ls_bl[1]
rs_ybl=ls_bl[2]
rs_wbl=ls_bl[3]
rs_hbl=ls_bl[4]
RETURN
另外你在OPEN事件里取出各个控件的比例放在TAG中就可以了:
Top
5 楼peterlz(peter)回复于 2003-06-04 08:36:32 得分 0
在OPEN事件中
Integer li_controls,i
Long ll_width,ll_height
String ls_xbl,ls_ybl,ls_wbl,ls_hbl
ll_width=this.workspacewidth()
ll_height=this.workspaceheight()
li_controls=upperbound(this.control[])
FOR i=1 TO li_controls
CHOOSE CASE this.control[i].typeof()
CASE checkbox!
icbx_obj=this.control[i]
ls_xbl=string(round(icbx_obj.x/ll_width,3))
ls_ybl=string(round(icbx_obj.y/ll_height,3))
ls_wbl=string(round(icbx_obj.width/ll_width,3))
ls_hbl=string(round(icbx_obj.height/ll_height,3))
icbx_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE radiobutton!
irb_obj=this.control[i]
ls_xbl=string(round(irb_obj.x/ll_width,3))
ls_ybl=string(round(irb_obj.y/ll_height,3))
ls_wbl=string(round(irb_obj.width/ll_width,3))
ls_hbl=string(round(irb_obj.height/ll_height,3))
irb_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE commandbutton!
icb_obj=this.control[i]
ls_xbl=string(round(icb_obj.x/ll_width,3))
ls_ybl=string(round(icb_obj.y/ll_height,3))
ls_wbl=string(round(icb_obj.width/ll_width,3))
ls_hbl=string(round(icb_obj.height/ll_height,3))
icb_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE picture!
ip_obj=this.control[i]
ls_xbl=string(round(ip_obj.x/ll_width,3))
ls_ybl=string(round(ip_obj.y/ll_height,3))
ls_wbl=string(round(ip_obj.width/ll_width,3))
ls_hbl=string(round(ip_obj.height/ll_height,3))
ip_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE datawindow!
idw_obj=this.control[i]
ls_xbl=string(round(idw_obj.x/ll_width,3))
ls_ybl=string(round(idw_obj.y/ll_height,3))
ls_wbl=string(round(idw_obj.width/ll_width,3))
ls_hbl=string(round(idw_obj.height/ll_height,3))
idw_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE dropdownlistbox!
iddlb_obj=this.control[i]
ls_xbl=string(round(iddlb_obj.x/ll_width,3))
ls_ybl=string(round(iddlb_obj.y/ll_height,3))
ls_wbl=string(round(iddlb_obj.width/ll_width,3))
ls_hbl=string(round(iddlb_obj.height/ll_height,3))
iddlb_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE dropdownpicturelistbox!
iddplb_obj=this.control[i]
ls_xbl=string(round(iddplb_obj.x/ll_width,3))
ls_ybl=string(round(iddplb_obj.y/ll_height,3))
ls_wbl=string(round(iddplb_obj.width/ll_width,3))
ls_hbl=string(round(iddplb_obj.height/ll_height,3))
iddplb_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE listbox!
ilb_obj=this.control[i]
ls_xbl=string(round(ilb_obj.x/ll_width,3))
ls_ybl=string(round(ilb_obj.y/ll_height,3))
ls_wbl=string(round(ilb_obj.width/ll_width,3))
ls_hbl=string(round(ilb_obj.height/ll_height,3))
ilb_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE multilineedit!
imle_obj=this.control[i]
ls_xbl=string(round(imle_obj.x/ll_width,3))
ls_ybl=string(round(imle_obj.y/ll_height,3))
ls_wbl=string(round(imle_obj.width/ll_width,3))
ls_hbl=string(round(imle_obj.height/ll_height,3))
imle_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE editmask!
iem_obj=this.control[i]
ls_xbl=string(round(iem_obj.x/ll_width,3))
ls_ybl=string(round(iem_obj.y/ll_height,3))
ls_wbl=string(round(iem_obj.width/ll_width,3))
ls_hbl=string(round(iem_obj.height/ll_height,3))
iem_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE tab!
it_obj=this.control[i]
ls_xbl=string(round(it_obj.x/ll_width,3))
ls_ybl=string(round(it_obj.y/ll_height,3))
ls_wbl=string(round(it_obj.width/ll_width,3))
ls_hbl=string(round(it_obj.height/ll_height,3))
it_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE groupbox!
igb_obj=this.control[i]
ls_xbl=string(round(igb_obj.x/ll_width,3))
ls_ybl=string(round(igb_obj.y/ll_height,3))
ls_wbl=string(round(igb_obj.width/ll_width,3))
ls_hbl=string(round(igb_obj.height/ll_height,3))
igb_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE hscrollbar!
ihsb_obj=this.control[i]
ls_xbl=string(round(ihsb_obj.x/ll_width,3))
ls_ybl=string(round(ihsb_obj.y/ll_height,3))
ls_wbl=string(round(ihsb_obj.width/ll_width,3))
ls_hbl=string(round(ihsb_obj.height/ll_height,3))
ihsb_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE listview!
ilv_obj=this.control[i]
ls_xbl=string(round(ilv_obj.x/ll_width,3))
ls_ybl=string(round(ilv_obj.y/ll_height,3))
ls_wbl=string(round(ilv_obj.width/ll_width,3))
ls_hbl=string(round(ilv_obj.height/ll_height,3))
ilv_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE picturebutton!
ipb_obj=this.control[i]
ls_xbl=string(round(ipb_obj.x/ll_width,3))
ls_ybl=string(round(ipb_obj.y/ll_height,3))
ls_wbl=string(round(ipb_obj.width/ll_width,3))
ls_hbl=string(round(ipb_obj.height/ll_height,3))
ipb_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE picturelistbox!
iplb_obj=this.control[i]
ls_xbl=string(round(iplb_obj.x/ll_width,3))
ls_ybl=string(round(iplb_obj.y/ll_height,3))
ls_wbl=string(round(iplb_obj.width/ll_width,3))
ls_hbl=string(round(iplb_obj.height/ll_height,3))
iplb_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE singlelineedit!
isle_obj=this.control[i]
ls_xbl=string(round(isle_obj.x/ll_width,3))
ls_ybl=string(round(isle_obj.y/ll_height,3))
ls_wbl=string(round(isle_obj.width/ll_width,3))
ls_hbl=string(round(isle_obj.height/ll_height,3))
isle_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE treeview!
itv_obj=this.control[i]
ls_xbl=string(round(itv_obj.x/ll_width,3))
ls_ybl=string(round(itv_obj.y/ll_height,3))
ls_wbl=string(round(itv_obj.width/ll_width,3))
ls_hbl=string(round(itv_obj.height/ll_height,3))
itv_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE userobject!
iuo_obj=this.control[i]
ls_xbl=string(round(iuo_obj.x/ll_width,3))
ls_ybl=string(round(iuo_obj.y/ll_height,3))
ls_wbl=string(round(iuo_obj.width/ll_width,3))
ls_hbl=string(round(iuo_obj.height/ll_height,3))
iuo_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE vscrollbar!
ivsb_obj=this.control[i]
ls_xbl=string(round(ivsb_obj.x/ll_width,3))
ls_ybl=string(round(ivsb_obj.y/ll_height,3))
ls_wbl=string(round(ivsb_obj.width/ll_width,3))
ls_hbl=string(round(ivsb_obj.height/ll_height,3))
ivsb_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE graph!
igr_obj=this.control[i]
ls_xbl=string(round(igr_obj.x/ll_width,3))
ls_ybl=string(round(igr_obj.y/ll_height,3))
ls_wbl=string(round(igr_obj.width/ll_width,3))
ls_hbl=string(round(igr_obj.height/ll_height,3))
igr_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE olecontrol!
iole_obj=this.control[i]
ls_xbl=string(round(iole_obj.x/ll_width,3))
ls_ybl=string(round(iole_obj.y/ll_height,3))
ls_wbl=string(round(iole_obj.width/ll_width,3))
ls_hbl=string(round(iole_obj.height/ll_height,3))
iole_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE richtextedit!
irte_obj=this.control[i]
ls_xbl=string(round(irte_obj.x/ll_width,3))
ls_ybl=string(round(irte_obj.y/ll_height,3))
ls_wbl=string(round(irte_obj.width/ll_width,3))
ls_hbl=string(round(irte_obj.height/ll_height,3))
irte_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE statictext!
ist_obj=this.control[i]
ls_xbl=string(round(ist_obj.x/ll_width,3))
ls_ybl=string(round(ist_obj.y/ll_height,3))
ls_wbl=string(round(ist_obj.width/ll_width,3))
ls_hbl=string(round(ist_obj.height/ll_height,3))
ist_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
CASE line!
iln_obj=this.control[i]
ls_xbl=string(round(iln_obj.beginx/ll_width,3))
ls_ybl=string(round(iln_obj.beginy/ll_height,3))
ls_wbl=string(round(iln_obj.endx/ll_width,3))
ls_hbl=string(round(iln_obj.endy/ll_height,3))
iln_obj.tag=ls_xbl+'/'+ls_ybl+'/'+ls_wbl+'/'+ls_hbl
END CHOOSE
NEXTTop
6 楼peterlz(peter)回复于 2003-06-04 08:37:25 得分 10
续上
在RESIZE事件中
Integer li_controls,i
String ls_xbl,ls_ybl,ls_wbl,ls_hbl
This.Setredraw(false)
li_controls=upperbound(This.Control[])
FOR i=1 TO li_controls
CHOOSE CASE This.Control[i].TypeOf()
CASE checkbox!
icbx_obj=This.control[i]
of_getbl(icbx_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
icbx_obj.x=newwidth*real(ls_xbl)
icbx_obj.y=newheight*real(ls_ybl)
CASE radiobutton!
irb_obj=This.control[i]
of_getbl(irb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
irb_obj.x=newwidth*real(ls_xbl)
irb_obj.y=newheight*real(ls_ybl)
CASE commandbutton!
icb_obj=This.control[i]
of_getbl(icb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
icb_obj.x=newwidth*real(ls_xbl)
icb_obj.y=newheight*real(ls_ybl)
icb_obj.width=newwidth*real(ls_wbl)
icb_obj.height=newheight*real(ls_hbl)
CASE picture!
ip_obj=This.control[i]
of_getbl(ip_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
ip_obj.x=newwidth*real(ls_xbl)
ip_obj.y=newheight*real(ls_ybl)
ip_obj.width=newwidth*real(ls_wbl)
ip_obj.height=newheight*real(ls_hbl)
CASE datawindow!
idw_obj=This.control[i]
of_getbl(idw_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
idw_obj.x=newwidth*real(ls_xbl)
idw_obj.y=newheight*real(ls_ybl)
idw_obj.width=newwidth*real(ls_wbl)
idw_obj.height=newheight*real(ls_hbl)
CASE dropdownlistbox!
iddlb_obj=This.control[i]
of_getbl(iddlb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
iddlb_obj.x=newwidth*real(ls_xbl)
iddlb_obj.y=newheight*real(ls_ybl)
iddlb_obj.width=newwidth*real(ls_wbl)
CASE dropdownpicturelistbox!
iddplb_obj=This.control[i]
of_getbl(iddplb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
iddplb_obj.x=newwidth*real(ls_xbl)
iddplb_obj.y=newheight*real(ls_ybl)
iddplb_obj.width=newwidth*real(ls_wbl)
CASE listbox!
ilb_obj=This.control[i]
of_getbl(ilb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
ilb_obj.x=newwidth*real(ls_xbl)
ilb_obj.y=newheight*real(ls_ybl)
ilb_obj.width=newwidth*real(ls_wbl)
ilb_obj.height=newheight*real(ls_hbl)
CASE multilineedit!
imle_obj=This.control[i]
of_getbl(imle_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
imle_obj.x=newwidth*real(ls_xbl)
imle_obj.y=newheight*real(ls_ybl)
imle_obj.width=newwidth*real(ls_wbl)
imle_obj.height=newheight*real(ls_hbl)
CASE editmask!
iem_obj=This.control[i]
of_getbl(iem_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
iem_obj.x=newwidth*real(ls_xbl)
iem_obj.y=newheight*real(ls_ybl)
iem_obj.width=newwidth*real(ls_wbl)
iem_obj.height=newheight*real(ls_hbl)
CASE tab!
it_obj=This.control[i]
of_getbl(it_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
it_obj.x=newwidth*real(ls_xbl)
it_obj.y=newheight*real(ls_ybl)
it_obj.width=newwidth*real(ls_wbl)
it_obj.height=newheight*real(ls_hbl)
CASE groupbox!
igb_obj=This.control[i]
of_getbl(igb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
igb_obj.x=newwidth*real(ls_xbl)
igb_obj.y=newheight*real(ls_ybl)
igb_obj.width=newwidth*real(ls_wbl)
igb_obj.height=newheight*real(ls_hbl)
CASE hscrollbar!
ihsb_obj=This.control[i]
of_getbl(ihsb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
ihsb_obj.x=newwidth*real(ls_xbl)
ihsb_obj.y=newheight*real(ls_ybl)
ihsb_obj.width=newwidth*real(ls_wbl)
ihsb_obj.height=newheight*real(ls_hbl)
CASE picturebutton!
ipb_obj=This.control[i]
of_getbl(ipb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
ipb_obj.x=newwidth*real(ls_xbl)
ipb_obj.y=newheight*real(ls_ybl)
ipb_obj.width=newwidth*real(ls_wbl)
ipb_obj.height=newheight*real(ls_hbl)
CASE listview!
ilv_obj=This.control[i]
of_getbl(ilv_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
ilv_obj.x=newwidth*real(ls_xbl)
ilv_obj.y=newheight*real(ls_ybl)
ilv_obj.width=newwidth*real(ls_wbl)
ilv_obj.height=newheight*real(ls_hbl)
CASE picturelistbox!
iplb_obj=This.control[i]
of_getbl(iplb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
iplb_obj.x=newwidth*real(ls_xbl)
iplb_obj.y=newheight*real(ls_ybl)
iplb_obj.width=newwidth*real(ls_wbl)
iplb_obj.height=newheight*real(ls_hbl)
CASE singlelineedit!
isle_obj=This.control[i]
of_getbl(isle_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
isle_obj.x=newwidth*real(ls_xbl)
isle_obj.y=newheight*real(ls_ybl)
isle_obj.width=newwidth*real(ls_wbl)
isle_obj.height=newheight*real(ls_hbl)
CASE treeview!
itv_obj=This.control[i]
of_getbl(itv_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
itv_obj.x=newwidth*real(ls_xbl)
itv_obj.y=newheight*real(ls_ybl)
itv_obj.width=newwidth*real(ls_wbl)
itv_obj.height=newheight*real(ls_hbl)
CASE userobject!
iuo_obj=This.control[i]
of_getbl(iuo_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
iuo_obj.x=newwidth*real(ls_xbl)
iuo_obj.y=newheight*real(ls_ybl)
iuo_obj.width=newwidth*real(ls_wbl)
iuo_obj.height=newheight*real(ls_hbl)
CASE vscrollbar!
ivsb_obj=This.control[i]
of_getbl(ivsb_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
ivsb_obj.x=newwidth*real(ls_xbl)
ivsb_obj.y=newheight*real(ls_ybl)
ivsb_obj.width=newwidth*real(ls_wbl)
ivsb_obj.height=newheight*real(ls_hbl)
CASE graph!
igr_obj=This.control[i]
of_getbl(igr_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
igr_obj.x=newwidth*real(ls_xbl)
igr_obj.y=newheight*real(ls_ybl)
igr_obj.width=newwidth*real(ls_wbl)
igr_obj.height=newheight*real(ls_hbl)
CASE olecontrol!
iole_obj=This.control[i]
of_getbl(iole_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
iole_obj.x=newwidth*real(ls_xbl)
iole_obj.y=newheight*real(ls_ybl)
iole_obj.width=newwidth*real(ls_wbl)
iole_obj.height=newheight*real(ls_hbl)
CASE richtextedit!
irte_obj=This.control[i]
of_getbl(irte_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
irte_obj.x=newwidth*real(ls_xbl)
irte_obj.y=newheight*real(ls_ybl)
irte_obj.width=newwidth*real(ls_wbl)
irte_obj.height=newheight*real(ls_hbl)
CASE statictext!
ist_obj=This.control[i]
of_getbl(ist_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
ist_obj.x=newwidth*real(ls_xbl)
ist_obj.y=newheight*real(ls_ybl)
ist_obj.width=newwidth*real(ls_wbl)
CASE line!
iln_obj=This.control[i]
of_getbl(iln_obj.tag,ls_xbl,ls_ybl,ls_wbl,ls_hbl)
iln_obj.beginx=newwidth*real(ls_xbl)
iln_obj.beginy=newheight*real(ls_ybl)
iln_obj.endx=newwidth*real(ls_wbl)
iln_obj.endy=newheight*real(ls_hbl)
END CHOOSE
NEXT
This.Setredraw(true)
代码经过测试.Top
7 楼langel(小白)回复于 2003-06-04 08:42:46 得分 10
用PFC吧,有专门的控件大小自动调整服务:Top
8 楼zapjenny(简爱)回复于 2003-06-04 09:17:51 得分 0
学习,,,Top
9 楼homeness(胡同里的小猫)回复于 2003-06-04 09:18:35 得分 10
代码肯定是要在resize上面写的
this.width=newwidth
this.height=newheight
this.x=oldx
this.y=oldy
不过我还是觉得pfc好用Top
相关问题
- DELPHI中如何动态修改动态控件的CAPTION值
- 如何在Delphi中实现在运行时动态用鼠标修改控件的大小,位置改变已经解决.高分!
- 请问:1.如何使基于对话框的应用程序启动时即为最大化并禁止用户修改窗体大小;2.如何动态创建控件及修改其属性(如botton,editbox,特别是修改picture控件的大小)?谢谢,每题20分.
- 怎样动态修改datareport里label控件的caption的值??????????
- 动态修改控件名称,然后取值问题
- 如何动态的修改HtmlInputFile控件的值?
- 一个高深问题:如何动态修改控件类型
- 怎么修改RTE控件的字体大小?
- 怎样在程序运行是修改控件的大小.
- 怎么外部修改IMAGE控件的大小




