aardio - 根据DPI自动调整控件参数的方法

看效果(自动调整表格行高、列宽):

 

 原理:

1、根据dpiScaleX或dpiScaleY的值,计算出缩放比例。

2、在 winform.onDpiChanged 事件里,根据缩放比例,对需要调整的组件参数进行设置。

示例代码:

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469;composited=1)
winform.add(
button={cls="button";text="刷新";left=235;top=318;right=515;bottom=380;db=1;dl=1;z=2};
custom={cls="custom";text="自定义控件";left=17;top=12;right=743;bottom=295;ah=1;aw=1;border=1;db=1;dl=1;dr=1;dt=1;edge=1;z=1}
)
/*}}*/

winform.show();

import godking.egrid
var e = godking.egrid(winform.custom)

// 下面这个函数是计算、调整的关键部分
var rescale = function(){
	var rowh = 30
	var colw = {90,100,80,60,120}
	var dpi =winform.dpiScaleX
	rowh *= dpi;
	for(i=1;#colw;1) colw[i] *= dpi;
	e.RowHeight=rowh
	e.setColWidth(,colw)
}

winform.onDpiChanged = function(dpiX,dpiY,rect){
    winform.enableDpiScaling(dpiX/96,dpiY/96) 
    rescale()  // 系统dpi改变后自动调整
}

e.setText(0,1,{"文本型","图片型","选择型","不可编辑列表型"})
e.setText(1,{1,4},{"第1行第1列","第1行第4列"})
e.setText(2,,"全部第2行")
e.setText(3,1,"第3行第1列")

rescale(); // 软件启动,先设置一下
winform.button.oncommand = function(id,event){
	rescale(); // 随时可以手动刷新
}

win.loopMessage();

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卢光庆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值