FORM上に文字を書くには?


よっすぃ〜  2004-04-07 14:54:33  No: 82903  IP: [192.*.*.*]

OS:windowsVP
vb:vb6

現在、FORM上に座標値を取得して、その座標値に点を描画させる
ようにしたのですが、その点の横あたりに、文字を書かせるように
したいのですが、どの様にしたらできますでしょうか?
VB超初心者なので、やさしくお教え願います。
なお、現在書いた文は以下のとおりです。

Private Sub Command1_Click()
    Dim XX(100), YY(100) As Single
    ID = Text1.Text
    XX(ID) = Text2.Text
    YY(ID) = Text3.Text
    Form1.DrawWidth = 7
    Form1.PSet (XX(ID), YY(ID)), QBColor(9)  ←この後に文字を・・・
    ID = ID + 1
    Text1.Text = ID
End Sub

以上、よろしくお願いいたします。

編集 削除
長谷川  2004-04-07 15:47:18  No: 82904  IP: [192.*.*.*]

一番簡単なのはPrintメソッドですかね。

Private Sub Command1_Click()
    Dim XX(100), YY(100) As Single
    Dim id As String
    id = Text1.Text
    XX(id) = Text2.Text
    YY(id) = Text3.Text
    Form1.DrawWidth = 7
    Form1.PSet (XX(id), YY(id)), QBColor(9)
    '描画された点に重ならないように座標を求める
    Form1.CurrentX = XX(id) + (Form1.ScaleX(Form1.DrawWidth, vbPixels, Form1.ScaleMode) / 2)
    Form1.CurrentY = YY(id) - (Form1.TextHeight("出力する文字列") / 2)
    Form1.Print "出力する文字列"
    id = id + 1
    Text1.Text = id
End Sub

Printメソッドは座標を指定して出力できないので、
出力位置をCurrentX,CurrentYプロパティで指定してください。
上記のソースでは描画された点に重ならないように座標を求めて代入しています。
だいぶ適当に作りましたが、DrawWidthとか変えても点の右側に文字列が出力されると思います。
また、出力される文字列はFormのFontプロパティに依存しますので、
文字列のサイズ等変更したい場合はFontプロパティを変更するようにしてください。

編集 削除
よっすぃ〜  2004-04-07 17:44:01  No: 82905  IP: [192.*.*.*]

Printメソッド以外に何かありますか?
また、この記入した文字については、消すことは可能でしょうか?
再度、ご返答願います。

編集 削除
長谷川  2004-04-07 17:59:02  No: 82906  IP: [192.*.*.*]

あとはAPIを使用することになると思います。
DrawText,TextOutを調べてみてください。

Pritメソッド、また上記のAPIは画面に文字を描画していますので、
文字列だけを消去ということはできません。

あ、後は背景を透明にしたLabelコントロールを使うのもいいかも知れません。
これでしたら、Captionプロパティを空にするなり非表示にすればすみますので。

編集 削除
よっすぃ〜  2004-04-08 19:52:14  No: 82907  IP: [192.*.*.*]

なんどもすみません。
Labelコントロールを使用する場合は、Labelをあらかじめ必要な数だけ
用意しておかなければならないのでしょうか?
それとも、Labelコントロールを配置させる命令を記述することは可能
なのでしょうか?

編集 削除
長谷川  2004-04-09 14:41:52  No: 82908  IP: [192.*.*.*]

Labelをコントロール配列にして1つだけ配置します。

それで、
Load Label1(lCntLbl)
Label1(lCntLbl).Left=配置するX座標
Label1(lCntLbl).Top=配置するY座標
Label1(lCntLbl).Visible=True
lCntLbl=lCntLbl+1
などとするとLabel1が新しく配置されます。
※lCntLblはLabelコントロールの数を保持する変数

編集 削除