0

我是一个不规则的 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。

4

1 回答 1

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
于 2013-02-22T12:59:45.713 回答