ご教授下さい。
VB6(SP5)+W2kの環境にて、
テキストボックス(Multiline=TRUE)の内容を
ピクチャボックス内の任意の位置へ表示させる場合に
1行目は指定(クリックした位置)に表示されますが
2行目以降がピクチャボックスの左端に寄って表示されてしまいます。
下記の内容で処理を実施しています。
with picture1
.CurrentX = x
.CurrentY = y
.Print Text1.Text
end with
アドバイスを宜しくお願いします。
無難なのは、1行ずつ切り出して出力していくことでしょう。
どうしてもまとめて行いたいのであれば、幾つかの制限が
ありますが、API関数のDrawTextなどを使ってみるとか。
考えてみれば、ScaleLeftプロパティを適切に設定すれば、
そのままでできますね。
K.J.Kさんへ
アドバイスありがとうごうざいます。
picture1のscaleleftに指定したXを設定した結果、
2行目以降が見えなくなってしまいました。
picture1のScalemode=3(ピクセル)
指定位置の座標はPicture1_MouseDownの引数のXYを
そのまま利用しています。
picture1.printの前に「scalemode」を調整してみましたが
ダメでした。
.Picture1.CurrentX = X
.Picture1.CurrentY = Y
.Picture1.ScaleMode = 1 or 2 or 3 or 4(それぞれで試してみました)
.Picture1.ScaleLeft = X
.Picture1.Print Text1.Text
> 下記の内容で処理を実施しています。
ダウト。(^-^;
Printメソッドは特殊な構文を持っているので、
With ブロックを利用できないはずです。
> 2行目以降が見えなくなってしまいました。
なんとなく、Scale 系プロパティの動作(および使い方)に対する
理解が不足しているように見受けられますので、ヘルプの下記の項を
読み直される事をお奨めします。
[Visual Basic ドキュメント]
┗[Visual Basic の使用方法]
┗[プログラミング ガイド]
┗[Visual Basic を使ってできること]
┗[テキストおよびグラフィックスの操作]
┗[座標系]★
┣[オブジェクトの座標系の変更]★
┗[スケールの変換]
一応、サンプルも書いておきますね。
Private Sub Form_Load()
Picture1.AutoRedraw = True
'左端に、約2文字分の余白を設ける
Picture1.ScaleMode = vbCharacters
Picture1.ScaleLeft = -2
End Sub
Private Sub Command1_Click()
Picture1.Cls
Picture1.Print Text1.Text
End Sub
魔界の仮面弁士さんへ
アドバイスありがとうございます。
>> 下記の内容で処理を実施しています。
>ダウト。(^-^;
>
>Printメソッドは特殊な構文を持っているので、
>With ブロックを利用できないはずです。
ご指摘のとおりです。
書き込み時に先頭に「.」が混入してます。
必要ありません。
>> 2行目以降が見えなくなってしまいました。
>なんとなく、Scale 系プロパティの動作(および使い方)に対する
>理解が不足しているように見受けられますので、ヘルプの下記の項を
>読み直される事をお奨めします。
ありがとうございます。その通りです。
中途半端に覚えているので始末が悪いです。
勉強し直します。
>一応、サンプルも書いておきますね。
>Private Sub Form_Load()
> Picture1.AutoRedraw = True
> '左端に、約2文字分の余白を設ける
> Picture1.ScaleMode = vbCharacters
> Picture1.ScaleLeft = -2
>End Sub
>
>Private Sub Command1_Click()
> Picture1.Cls
> Picture1.Print Text1.Text
>End Sub
ありがとうございます。
サンプルを見て「Picture1.ScaleLeft」の設定で
自分が勘違いしていることがわかりました。
適切な設定で無事表示できるようになりました。
K.J.Kさん/魔界の仮面弁士さんへ
アドバイスありがとうございました。
勉強し直して、理解できない部分がありましたら
また質問させていただきます。
この件は「解決」とさせて頂きます。
ありがとうございました。
やりたかったのってこういうことじゃない??
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
With Picture1
.Cls
.ScaleLeft = .ScaleLeft - X
.CurrentX = 0
.CurrentY = Y
End With
Picture1.Print Text1.Text
End Sub
ツイート | ![]() |