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%

これにより、値が「タブポス」の位置に出力されますが、すべて左寄せになります。

右寄せする最初の試みは、「値」の長さによって決定されるいくつかのスペースで埋められる関数を使用することでした。例:

Gui, Add, Text, x%tabpos% y300, % pad(6, value1)

pad(width, val)
{
   ans :=  SubStr("      ", 1, width-StrLen(val)).val
   return ans
}

しかし、数字の幅がスペースの幅と同じ(またはその倍数)ではなかったため、これはうまく機能しませんでした。関数に倍数を導入したところ、タイプサイズと書体によって機能が異なりました。

2番目の試みは、「値」の長さに応じて「タブポス」をピクセル数だけ調整することでした。例えば ​​:

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 に答える