ピクチャボックスの任意の位置にテキストボックス(複数行)を複写するには?

解決


たいむ  2006-02-09 20:02:37  No: 94091

ご教授下さい。

VB6(SP5)+W2kの環境にて、
テキストボックス(Multiline=TRUE)の内容を
ピクチャボックス内の任意の位置へ表示させる場合に
1行目は指定(クリックした位置)に表示されますが
2行目以降がピクチャボックスの左端に寄って表示されてしまいます。

下記の内容で処理を実施しています。

with picture1
 .CurrentX = x
 .CurrentY = y
 .Print Text1.Text
end with

アドバイスを宜しくお願いします。


K.J.K.  2006-02-09 20:34:44  No: 94092

無難なのは、1行ずつ切り出して出力していくことでしょう。
どうしてもまとめて行いたいのであれば、幾つかの制限が
ありますが、API関数のDrawTextなどを使ってみるとか。


K.J.K.  2006-02-09 20:38:36  No: 94093

考えてみれば、ScaleLeftプロパティを適切に設定すれば、
そのままでできますね。


たいむ  2006-02-09 22:46:07  No: 94094

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


魔界の仮面弁士  2006-02-09 23:20:37  No: 94095

> 下記の内容で処理を実施しています。

ダウト。(^-^;

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


たいむ  2006-02-10 00:01:37  No: 94096

魔界の仮面弁士さんへ
  アドバイスありがとうございます。

>> 下記の内容で処理を実施しています。
>ダウト。(^-^;
>
>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さん/魔界の仮面弁士さんへ
  アドバイスありがとうございました。
  勉強し直して、理解できない部分がありましたら
  また質問させていただきます。

この件は「解決」とさせて頂きます。
ありがとうございました。


やじうま  2006-02-10 00:18:49  No: 94097

やりたかったのってこういうことじゃない??

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加