2013-02-22 93 views
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」長度決定的空格的函數。對於exammple:

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

......怎麼

Gui, Add, Text, x100 y100 w100 Right, 123 
Gui, Add, Text, x100 y120 w100 Right, 123456 
Gui, Add, Text, x100 y140 w100 Right, 123456789 
+0

哇!這是一個快速的答案,謝謝。它完美的工作 - 只是工作。 – jandrew 2013-02-22 16:06:04

+0

它適合你嗎? – 2013-02-22 16:06:48

+0

@Jandrew,如果有效,你能否「接受」我的答案?謝謝! – 2013-02-22 17:57:55