VB6.0で次のようなプログラムを記入し、PictureBoxに出力しています。表示される際に右寄せにするには、どうしたらよいでしょうか。
ban = InputBox("番号を入力して下さい。", "番号入力", 0)
Picture1.Print ban
[VB] 右揃えで印刷を行う方法
http://support.microsoft.com/kb/413158/ja
Printer オブジェクトの場合のサンプルですが、
PictureBox に対しても応用できるかと。
頭部分にスペースを入れるのはどうですか?
ban = InputBox("番号を入力して下さい。", "番号入力", 0)
ban = Right(Space(4) & ban, 4) '4文字分の幅
Picture1.Print ban
因みにTextBoxやLabelならプロパティで右寄せにすることが可能ですが。
Option Explicit
Dim ban As Integer '番号
すみませんできませんでした。PictureBoxに連続して表示したいと考えています。
Private Sub Command1_Click()
ban = InputBox("番号を入力して下さい。", "番号入力", 0)
Do Until ban = 9999
Picture1.Print ban
ban = InputBox("番号を入力して下さい。", "番号入力", 0)
Loop
End Sub
> すみませんできませんでした。
>
どのようなプログラムを書いてできなかったのでしょうか。
「こう書いてできませんでした。」という例を示してもらわないとどの方向で進めたいのかわかりませんよ。
因みに私の方法でやるとしたら
Picture1.Print Right(Space(4) & ban, 4)
とすればできそうですが。
何度もありがとうございます。
教えていただいた方法で実行して見ましたら。
下記のようなピラミッドのように表示されてしまいました。
(数字は表示の際はすべて半角です)
1
10
100
完全なる右寄せにはできないのでしょうか?
空白文字の幅と、数字の文字幅は異なります(標準のフォントの場合)。
文字によって、そのサイズが異なる事に注意してください。たとえば、
iiiiiiiiii
WWWWWWWWWW
などは、フォントによっては文字幅が異なって見えてしまうでしょう。
空白で処理するのではなく、先述の URL にもありますように、
TextWidth メソッドで文字列の長さを測定し、
それを「右寄せ」に相当する座標に Print してみてください。
これであれば、標準のフォントであっても、正しく右寄せされます。
Private Sub Form_Load()
Picture1.AutoRedraw = True
RightDraw Picture1, "1"
RightDraw Picture1, "10"
RightDraw Picture1, "100"
End Sub
Private Sub RightDraw(ByVal p As Object, ByVal s As String)
p.CurrentX = p.ScaleWidth - p.TextWidth(s)
p.Print s
End Sub
また、描画処理に拘るのでのでなければ、Print するのではなく、
Alignment = 右寄せ に設定した TextBox を使った方が楽かと思います。
対象コントロールのFont プロパティをPなし(プロポーショナルではない)
フォントに変更してください。(MS P ゴシック ---> MS ゴシック)
プロポーショナルについての知識はネットで検索してください。