こんにちは!
どうしても行き詰まってしまって困っています。
テキストボックスのなかのテキストをPrinterオブジェクトを使って印刷するに当たり、一行52文字づつ、40行まで入れられる大きさを持った四角型のラインをひきました。このなかにテキストをいれて印刷したいのですが、ループ関数、Left関数を使って52文字取り出して、53文字目からは次の行に表示されるように処理をしました.ところが、途中に改行があるとうまく表示されません.このような場合、改行の処理はどうしたらよいでしょうか?いろいろ考えてみましたがお手上げです。どなたかご教示ください!!
…例外処理としてはじき出す(黒ポチで出力とか)か、改行処理を追加するか。
面倒なら、はじくだけでもいいかもしれない。
>イトウさま
お返事ありがとうございます。
はじき出すのにあたり、ループでまわして、一文字づつ検索しようと思います。
しかし,この方法だと、改行(Chr(13) & Chr(10))は二文字になってしまい認識されないので、どうすればいいでしょうか?
一文字ずつ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
>イトウさま
本当に,ありがとうございます!!
早速試してみます!!
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
>イトウさま、k.kさま
お返事ありがとうございます!!
お二人の方法、ともに試してみましたら、うまくいきました!!
さすがです!!
本当にありがとうございました!!感謝いたします!!
またご教示ください!!
ツイート | ![]() |