PictureBox内で右寄せするには?


初心者  2009-11-10 10:31:45  No: 142772  IP: [192.*.*.*]

VB6.0で次のようなプログラムを記入し、PictureBoxに出力しています。表示される際に右寄せにするには、どうしたらよいでしょうか。
ban = InputBox("番号を入力して下さい。", "番号入力", 0)
Picture1.Print ban

編集 削除
魔界の仮面弁士  2009-11-10 13:42:07  No: 142773  IP: [192.*.*.*]

[VB] 右揃えで印刷を行う方法
http://support.microsoft.com/kb/413158/ja


Printer オブジェクトの場合のサンプルですが、
PictureBox に対しても応用できるかと。

編集 削除
GOD  2009-11-10 13:46:37  No: 142774  IP: [192.*.*.*]

頭部分にスペースを入れるのはどうですか?
    ban = InputBox("番号を入力して下さい。", "番号入力", 0)
    ban = Right(Space(4) & ban, 4)    '4文字分の幅
    Picture1.Print ban

因みにTextBoxやLabelならプロパティで右寄せにすることが可能ですが。

編集 削除
初心者  2009-11-11 12:10:56  No: 142775  IP: [192.*.*.*]

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

編集 削除
GOD  2009-11-11 16:38:40  No: 142776  IP: [192.*.*.*]

> すみませんできませんでした。
>
どのようなプログラムを書いてできなかったのでしょうか。
「こう書いてできませんでした。」という例を示してもらわないとどの方向で進めたいのかわかりませんよ。
因みに私の方法でやるとしたら
Picture1.Print Right(Space(4) & ban, 4)
とすればできそうですが。

編集 削除
初心者  2009-11-12 10:11:45  No: 142777  IP: [192.*.*.*]

何度もありがとうございます。
教えていただいた方法で実行して見ましたら。
下記のようなピラミッドのように表示されてしまいました。
(数字は表示の際はすべて半角です)
   1
   10
  100
完全なる右寄せにはできないのでしょうか?

編集 削除
魔界の仮面弁士  2009-11-12 10:22:41  No: 142778  IP: [192.*.*.*]

空白文字の幅と、数字の文字幅は異なります(標準のフォントの場合)。

文字によって、そのサイズが異なる事に注意してください。たとえば、
  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 を使った方が楽かと思います。

編集 削除
GOD  2009-11-12 10:23:42  No: 142779  IP: [192.*.*.*]

対象コントロールのFont プロパティをPなし(プロポーショナルではない)
フォントに変更してください。(MS P ゴシック ---> MS ゴシック)
プロポーショナルについての知識はネットで検索してください。

編集 削除