右对齐值列表

时间:2013-02-22 11:48:51

标签: autohotkey

我是一名不规范的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。

1 个答案:

答案 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