改行について

解決


あんず  2003-10-06 19:24:56  No: 79659

こんにちは!
どうしても行き詰まってしまって困っています。
テキストボックスのなかのテキストをPrinterオブジェクトを使って印刷するに当たり、一行52文字づつ、40行まで入れられる大きさを持った四角型のラインをひきました。このなかにテキストをいれて印刷したいのですが、ループ関数、Left関数を使って52文字取り出して、53文字目からは次の行に表示されるように処理をしました.ところが、途中に改行があるとうまく表示されません.このような場合、改行の処理はどうしたらよいでしょうか?いろいろ考えてみましたがお手上げです。どなたかご教示ください!!


イトウ  2003-10-06 23:26:16  No: 79660

…例外処理としてはじき出す(黒ポチで出力とか)か、改行処理を追加するか。
面倒なら、はじくだけでもいいかもしれない。


あんず  2003-10-07 00:59:04  No: 79661

>イトウさま
お返事ありがとうございます。
はじき出すのにあたり、ループでまわして、一文字づつ検索しようと思います。
しかし,この方法だと、改行(Chr(13) & Chr(10))は二文字になってしまい認識されないので、どうすればいいでしょうか?


イトウ  2003-10-07 18:57:24  No: 79662

一文字ずつMid$関数でみてvbCRがあったら、ループ変数をひとつ増加してやる、という方法があります。
ループをするのは面倒なので、InStr関数を使ったほうが楽かもしれません。

dim i as integer
dim st as string
dim length as integer

st="aiueo"+VbCrlf+"kakikukeko"
length=Len(st)

'for
for i=1 to length
if Mid$(st,i,1)=vbCr then
  'ここに目的の処理を書く
  i=i+1
end if
Next

'Instr
do
  i=Instr(i,st,VbCrLf)
  if i<>0 then
    'ここに目的の処理を書く
  else
    exit do
  end if
loop


あんず  2003-10-08 02:00:49  No: 79663

>イトウさま
本当に,ありがとうございます!!
早速試してみます!!


k.k  2003-10-08 21:09:23  No: 79664

1行に53文字以上ある行は、改行させる方法として
(ノートパッドの「右端で折り返す」というのとほぼ同じようなもの)
VB6.0であれば、Split関数使った方法もありますね。

Dim strBuf As String
Dim varData As Variant
Dim cnt As Long
Dim pos As Long
'Text1の内容を1行52文字とし、右端で折り返したものをText2に表示
strBuf = StrConv(Text1.Text, vbUnicode)
varData = Split(strData, vbCrLf)
For cnt = 0 To UBound(varData)
    strBuf = varData(cnt)
    pos = 1
    While pos < Len(strBuf)
        Text2.Text = Text2.Text & Mid(strBuf, pos, 52) & vbCrLf
        pos = pos + 52
    Wend
Next


あんず  2003-10-08 23:37:22  No: 79665

>イトウさま、k.kさま

お返事ありがとうございます!!
お二人の方法、ともに試してみましたら、うまくいきました!!
さすがです!!
本当にありがとうございました!!感謝いたします!!
またご教示ください!!


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

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






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