我是一个不规则的 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”位置打印我的值,但都是左对齐的。
我第一次尝试右对齐是使用一个函数,该函数填充了由 "value" 的长度确定的多个空格。例如:
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。