投稿日 | : 2003/01/23(Thu) 17:41 |
投稿者 | : kazu |
Eメール | : |
URL | : |
タイトル | : Re^2: TextBox 内の文字列の印刷…改行したら…… |
早速、有り難うございます。おっしゃるとおりですね。
> 指定位置はどのように指定されているのですか?
> どの辺に印刷されるのですか?
外部ファイル(仮に"File.txt"とします)に次のように印字位置を指定しています。
単位はmmです。(文章の部分だけです)
#Locate 30,69, "!L1" '1行目
#Locate 30,73, "!L2" '2行目
#Locate 30,77, "!L3" '3行目
#Locate 30,81, "!L4" '4行目
#Locate 30,85, "!L5" '5行目
#Locate 30,89, "!L6" '6行目
これを次のように行っています。(かなり省略していますが……)
Private Sub Command1()Click
L1=Left(Text1.Text,15)
L2=Mid(Text1.Text,16,15)
・
・
・
L6=Mid(Text1.Text,76,15)
F1=FreeFile
Open "C:\My Documents\File.txt" For Input As #F1
Do
Line Input #F1, tmp
If InStr(tmp, "#Locate") Then
set_Print
End If
Loop Until EOF(F1)
Close F1
Set myObj = Printer
On Error GoTo err:
CDprt.CancelError = True
CDprt.ShowPrinter
GoTo prt:
err: Exit Sub
prt:
Printer.EndDoc
End Sub
Private Sub set_Print()
dat = Split(tmp, ",")
xx = CLng(Replace(dat(0), "#Locate ", ""))
yy = CLng(dat(1))
tmp1 = Trim(dat(2))
fp1 = InStr(tmp1, Chr(34))
fp2 = InStrRev(tmp1, Chr(34))
tmp2 = Replace(Mid(tmp1, fp1 + 1, fp2 - fp1 - 1), Chr(34), "")
If InStr(tmp2, "!") = 0 Then
pStr = tmp2
Else
Select Case tmp2
Case "!L1"
pStr = L1
Case "!L2"
pStr = L2
Case "!L3"
pStr = L3
Case "!L4"
pStr = L4
Case "!L5"
pStr = L5
Case "!L6"
pStr = L6
End Select
End If
End Sub
他の項目は印刷できますが、文章のところが、改行をせずに15文字まで詰めると
指示通りに印字位置に印刷しますが、それ以下で改行すると次の行が用紙の左端に
印字位置が跳んでしまいます。取得文字数に満たないからだと思うのですが……。