这两贴不错,自动调节字体和控件参数
一、字体随窗口大小自动缩放import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add(
static={cls="static";text="Static";left=308;top=185;right=518;bottom=354;ah=1;aw=1;font=LOGFONT(h=-32);transparent=1;z=1}
)
/*}}*/
var f = winform.static.getFont()
var h=f.h
var wh = winform.height
import godking.on
godking.on(winform).onSize = function(cw,ch,sizeType){
f.h=ch/wh*h
winform.static.setFont(f);
}
winform.show();
win.loopMessage();
二、根据DPI自动调整控件参数的方法
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 *= 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();
二、根据DPI自动调整控件参数的方法
运行了,报错
---------------------------
aardio:运行时错误
---------------------------
错误行号:#22
文件::
不支持此操作:perform arithmetic on
定义类型:variable(local)
名字:'colw'
类型:table
---------------------------------------------------
调用栈:
:22: in function 'rescale'
:37: in main chunk
---------------------------
确定
---------------------------
---------------------------
:)很不错哦!!! 可以 不错 本帖最后由 rmajly 于 2024-1-29 17:42 编辑
非常业余 发表于 2024-1-28 15:26
二、根据DPI自动调整控件参数的方法
运行了,报错
这一段修改成这样,不报错了
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 *= dpi;
e.RowHeight=rowh
e.setColWidth(,colw)
}
搞的不错 谢谢分享哟。 //调试有效果
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
dpi = math.random(1,5)
rowh *= dpi;
for(i=1;#colw;1) colw *= 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(); 善小而为_ 发表于 2024-2-1 17:42
//调试有效果
import win.ui;
/*DSG{{*/
:handshake
页:
[1]