数据窗口的内容随分辨率变化而变化

曹胜利 2009-06-13 06:51:56
我调整界面时,设置了界面控件,数据窗口大小随分辨率变化都没问题。但是数据窗口中的内容,就是那些列,还是按原来的位置存在一直没有变化,太难看了。我想要他们居中,我要怎么设置呢。求大侠们帮帮兄弟了。
...全文
51 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
曹胜利 2009-07-01
  • 打赏
  • 举报
回复
最近很乱,我的邮箱victorycsl@live.cn谢谢楼主了。
fuxiaoyang13 2009-07-01
  • 打赏
  • 举报
回复
俺也来顶顶,fuxiaoyang13@163.com
greatxingxing 2009-06-26
  • 打赏
  • 举报
回复
咦,楼上,能给我一份吗?
wenxing_zhong@163.com
阿富888 2009-06-26
  • 打赏
  • 举报
回复
PFC里有这个的类的,你可以去看看!
chenllxx 2009-06-22
  • 打赏
  • 举报
回复
我有自动调的代码,把邮箱留下吧
永生天地 2009-06-22
  • 打赏
  • 举报
回复
//效果差强人意,需要在窗口里设置好dw_1的宽度,使之能够将datawindow的内容居中
long delta_x,ll_dwoldwidth,ll_dwnewwidth

ll_dwoldwidth = dw_1.width
dw_1.width=newwidth
dw_1.height = newheight - dw_1.y
ll_dwnewwidth= dw_1.width
delta_x= (ll_dwnewwidth - ll_dwoldwidth) / 2

long ll_objs_x[],i

string ls_objs,ls_obj[]
ls_objs = dw_1.describe( "DataWindow.Objects")+"~t"

i=1
do while Pos(ls_objs, "~t" )>0
ls_obj[i]=left(ls_objs,Pos(ls_objs,"~t" ) - 1)
ls_objs=right(ls_objs,len(ls_objs) - Pos( ls_objs, "~t" ) )
//ls_objtype=adw_which.Describe(ls_obj+".Type")
ll_objs_x[i]=long(dw_1.describe(ls_obj[i]+".x") )
i++
loop

for i=1 to upperbound(ll_objs_x)
dw_1.Modify(ls_obj[i]+".x='"+string(ll_objs_x[i] + delta_x)+"'")
next
jimwoo 2009-06-22
  • 打赏
  • 举报
回复
得到datawindow的大小,然后再算每列的x
永生天地 2009-06-22
  • 打赏
  • 举报
回复
freeform的,还得研究一下了
[Quote=引用 13 楼 victorycsl 的回复:]
难道真的没有高手吗?我再补充一句,我用的是数据窗口是自由风格的。
[/Quote]
曹胜利 2009-06-22
  • 打赏
  • 举报
回复
难道真的没有高手吗?我再补充一句,我用的是数据窗口是自由风格的。
曹胜利 2009-06-19
  • 打赏
  • 举报
回复
可以这样操作,但是这样做的话,一是,如果数据窗口有变化的话,就得调整几个窗口。增加了工作量。二是,现在用户最求的办公条件不同。各种屏幕的适应分辨率不同,我得出几套方案去适应用户,甚至将来屏幕分辨率会到什么程度我也不清楚若这样只能每个分辨率对应一套方案。不能简单的以一个标准去做。
xiaolei8000 2009-06-19
  • 打赏
  • 举报
回复
如果是640×480或者800×600之间的,按照640×480的界面显示。
如果是1204×768之类的,再打开另外一个界面
永生天地 2009-06-18
  • 打赏
  • 举报
回复
应楼主如此强烈要求,特意给楼主写了一个实例,不知能能否满足楼主

新建窗口 - 放置dw控件 - retrieve事件代码

dw_1.width=newwidth
dw_1.height = newheight - dw_1.y

long ll_columncount,ll_columnwidth[],i,ll_columnwidthall,ll_dwwidth
dec ll_columnwidthpercent[]
ll_columncount =long( dw_1.describe( "datawindow.column.count"))

for i=1 to ll_columncount
ll_columnwidth[i]=long( dw_1.Describe("#"+string(i)+".Width"))
ll_columnwidthall+=ll_columnwidth[i]
next

for i=1 to ll_columncount
ll_columnwidthpercent[i]=ll_columnwidth[i]/ll_columnwidthall
next

ll_dwwidth=dw_1.width
for i=1 to ll_columncount
dw_1.Modify("#"+string(i)+".Width='"+string(ll_columnwidthpercent[i] * ll_dwwidth)+"'")
next


预览结果


曹胜利 2009-06-18
  • 打赏
  • 举报
回复
来来往往的大侠们,别飞太快了。给看一眼吧。
曹胜利 2009-06-18
  • 打赏
  • 举报
回复
好的,谢谢了。我的数据窗口是mdi窗口。而我的一个报表窗口是子窗口。我将这个子窗口平铺,而数据窗口中的内容不是居中的。我通过手动调节窗口的内容,将其居中了。但是这只适合这个分辨率,如果分辨率变化的话,数据窗口中的内容将不再居中。
永生天地 2009-06-18
  • 打赏
  • 举报
回复
没怎么看懂,明天在议
[Quote=引用 8 楼 victorycsl 的回复:]
谢谢楼上,但是没有效果。我要的效果是子窗口平铺下数据列无论屏幕分辨率怎么变都保持居中的效果。
[/Quote]
曹胜利 2009-06-18
  • 打赏
  • 举报
回复
谢谢楼上,但是没有效果。我要的效果是子窗口平铺下数据列无论屏幕分辨率怎么变都保持居中的效果。
newease 2009-06-15
  • 打赏
  • 举报
回复
楼主最好把现状和想实现的效果贴上来看看
曹胜利 2009-06-15
  • 打赏
  • 举报
回复
数据窗口dw_xx手调居中 1024X768
--------------------------
| 标题 |
| 列1 列2 列3 |
| |
| |
| |
|-------------------------
控件

数据窗口dw_xx 1152X864
--------------------------------------
| 标题 |
| 列1 列2 列3 |
| |
| |
| |
|-------------------------------------
控件
我的意思是窗口的空间我可以调整随分辨率变化而改变大小。函数我写好了。但是数据窗口中的内容位置却不随数据窗口
的分辨率的改变而改变,如图效果,分辨率变高了。数据窗口中的内容会偏左而不是居中了。我想要的效果是让数据窗口
中的内容随分辨率改变而始终保持居中。
zhgwbzhd 2009-06-15
  • 打赏
  • 举报
回复
如果是根据每一个分辨率,自动调整。
有时候确实界面很难看。

我们近期采用的方法是,如果是640×480或者800×600之间的,按照640×480的界面显示。
如果是1204×768之类的,再打开另外一个界面。
只需要根据分辨率的范围,打开不同的界面就好了。
wangxun0997 2009-06-14
  • 打赏
  • 举报
回复
你这需求的成本也太高了!有必要吗?
加载更多回复(1)

609

社区成员

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

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