我是一名不规范的AHK用户,通常在我的知识边缘工作。 我通常需要保留帮助文件。 我使用的是版本1.0.48.05并且有问题。
简而言之 - 我想使用Gui界面打印一个数值列表,以便相互排列的值在右边对齐。 我无法找到一种简单或强大的方法。我错过了什么 值可以在0到9999之间变化。它们总是整数。
====================
在我尝试右对齐之前,这是一段代码:
tabpos := 200
Gui, Add, Text, x%tabpos% y300, %value1%
Gui, Add, Text, x%tabpos% y320, %value2%
Gui, Add, Text, x%tabpos% y340, %value3%
Gui, Add, Text, x%tabpos% y360, %value4%
在" tabpos"上打印我的值位置,但都是左对齐的。
我的第一次右对齐尝试是使用一个函数,该函数填充了多个空格,这些空格由"值"的长度决定。 。例如:
Gui, Add, Text, x%tabpos% y300, % pad(6, value1)
pad(width, val)
{
ans := SubStr(" ", 1, width-StrLen(val)).val
return ans
}
但由于数字宽度与空间宽度不同(或倍数),因此效果不佳。 我在函数中引入了一个多重函数,对于不同的类型大小和字体,它的工作方式不同。
我的第二次尝试是调整" tabpos"取决于"值"的长度。例如:
newpos := tabpos - 9*StrLen(value1) ; Where a digit is 9 pixels wide
Gui, Add, Text, x%newpos% y300, %value1%
但这只适用于数字正好为9像素宽的地方。我想要一种更通用,更强大的方法。
我已尝试使用AHK SetFormat指令,但未能获得任何效果。也许我错误地使用它。无论如何,似乎SetFormat通过填充空格来工作,因此它与我的第一次尝试(上图)具有相同的效果,具有相同的问题。
==================
非常欢迎任何建议。
我希望该方法可以处理任何字体,类型大小,无论是粗体还是普通,以及监视器的DPI。
答案 0 :(得分:0)
怎么样......
Gui, Add, Text, x100 y100 w100 Right, 123
Gui, Add, Text, x100 y120 w100 Right, 123456
Gui, Add, Text, x100 y140 w100 Right, 123456789