[リストへもどる]
一括表示

投稿時間:2003/07/31(Thu) 10:06
投稿者名:冬季
Eメール:
URL :
タイトル:
printer.lineで縦線だけが出力されない
こんにちは、冬季です。
printer.lineに関してお聞かせください。

こちらのHPにある印刷関係の、printer.lineを使って罫線印刷する方法を
使わせて頂いているのですが、
なぜか起動後一番初めに印刷する時だけ縦の罫線だけが印刷されません。
(二回目以降は印刷されるのですけど…)
どなたか、解決方法をご存知の方いらっしゃいましたらご教授ください。

よろしくお願いします。

投稿時間:2003/07/31(Thu) 10:29
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: printer.lineで縦線だけが出力されない
> なぜか起動後一番初めに印刷する時だけ縦の罫線だけが印刷されません。
> (二回目以降は印刷されるのですけど…)

プリンタドライバにもよりますが、事前に、
  Printer.Print " "
というコードを実行しておいてから、Lineを引くようにすると、
解決する場合があります。

投稿時間:2003/07/31(Thu) 11:48
投稿者名:冬季
Eメール:
URL :
タイトル:
Re^2: printer.lineで縦線だけが出力されない
>魔界の仮面弁士様

> プリンタドライバにもよりますが、事前に、
>   Printer.Print " "
> というコードを実行しておいてから、Lineを引くようにすると、
> 解決する場合があります。

ご返信ありがとうございます。
教えていただいたようにprinter.lineの前にprinter.print " "と入れてみたのですが
結果は変わりませんでした。
プリンタドライバのせいなのでしょうか…。
二回目以降の印刷は問題なく縦も印刷されるのですけど….

>花ちゃん様

> > こちらのHPにある印刷関係の、printer.lineを使って罫線印刷する方法を
> > 使わせて頂いているのですが、
> ひょっとして、データーを表形式で印字する(024)のサンプルでしょうか

すみません、何を使わせて頂いているかを明記するべきでした。
使わせていただいたのは印刷関係の「指定位置に(文字・罫線)印刷する」(035)です。
PCを起動して一番初めに印刷する時だけ、縦線が印刷されていないのです…。

投稿時間:2003/07/31(Thu) 12:33
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: printer.lineで縦線だけが出力されない
> 使わせていただいたのは印刷関係の「指定位置に(文字・罫線)印刷する」(035)です。
> PCを起動して一番初めに印刷する時だけ、縦線が印刷されていないのです…。

(035)のサンプルは縦線は印刷していないと思うのですが?
そのままなら問題ないはずですが。

改造されているのならどのようにされているのか、状況を再現できるコードを
投稿して下さい。(必ず状況が再現できるコード全体を)
又、VBのバージョン・OSについても記入願います。

投稿時間:2003/07/31(Thu) 13:20
投稿者名:冬季
Eメール:
URL :
タイトル:
Re^4: printer.lineで縦線だけが出力されない
ご返信ありがとうございます。

> (035)のサンプルは縦線は印刷していないと思うのですが?
> そのままなら問題ないはずですが。

すいません、縦線はこちらで勝手に付け加えさせていただきました。

> 改造されているのならどのようにされているのか、状況を再現できるコードを
> 投稿して下さい。(必ず状況が再現できるコード全体を)
> 又、VBのバージョン・OSについても記入願います。

コードは以下のようになります。
Locateは変えておりません。
また、OSはwin2000、VBは6.0SP5です。

Private Sub cmdoutput_Click()

    If SSTab1.Tab = 0 Then
        Call Print_Print
    End If

End Sub

Private Sub Print_Print()

    '印字ずれを防ぐために等幅文字を指定
    Printer.FontName = "MS 明朝"
    Printer.FontSize = 13
    Printer.DrawStyle = vbDashDot       '線種を指定
    Printer.DrawWidth = 5               '線の太さを指定
    
'  縦線

    Printer.Line (4, 14)-(4, 60)             '縦左の線
    Printer.Line (14, 14)-(14, 60)           '縦二番目の線
    Printer.Line (52, 14)-(52, 44)           '縦真中の線
    Printer.Line (64.5, 10)-(64.5, 14)        '担当
    Printer.Line (73, 10)-(73, 14)            '工務部
    Printer.Line (81.5, 10)-(81.5, 14)        '印刷G
    Printer.Line (34, 19)-(34, 20)          '奥付の小ちゃな線
    Printer.Line (28, 20)-(28, 38)          '縦左半分の真中一番目
    Printer.Line (38, 20)-(38, 38)          '縦左半分真中の二番目
    Printer.Line (25, 38)-(25, 41)          '納本表示の1番目
    Printer.Line (34, 38)-(34, 41)          '納本表示の2番目
    Printer.Line (43, 38)-(43, 41)          '納本表示の3番目
    Printer.Line (52, 38)-(52, 41)          '納本表示の4番目
    Printer.Line (24, 44)-(24, 56)          '用紙枚数の1番目
    Printer.Line (35, 44)-(35, 60)          '用紙枚数の2番目
    Printer.Line (46, 44)-(46, 56)          '用紙枚数の3番目
    Printer.Line (57, 44)-(57, 56)          '用紙枚数の4番目
    Printer.Line (68, 44)-(68, 56)          '用紙枚数の5番目
    Printer.Line (79, 44)-(79, 56)          '用紙枚数の6番目
    Printer.Line (46, 58)-(46, 60)          '搬入先の右側
    Printer.Line (61.5, 15)-(61.5, 19)      '仕様・備考1
    Printer.Line (71, 15)-(71, 19)          '仕様・備考2
    Printer.Line (80.5, 15)-(80.5, 19)      '仕様・備考3
    Printer.Line (52, 20)-(90, 19)          '仕様・備考斜め線
    Printer.Line (90, 10)-(90, 60)           '縦一番右の線

'  横線
    Printer.Line (38, 6 * 1.2)-(55, 6 * 1.2)
    Printer.Line (64.5, 10)-(90, 10)
    Printer.Line (64.5, 11)-(90, 11)
    Printer.Line (6, 10 * 1.2)-(17, 10 * 1.2)
    Printer.Line (4, 14)-(90, 14)
    Printer.Line (4, 15)-(90, 15)
    Printer.Line (4, 19)-(90, 19)
    Printer.Line (4, 20)-(90, 20)
    Printer.Line (4, 23)-(90, 23)
    Printer.Line (4, 26)-(90, 26)
    Printer.Line (4, 29)-(90, 29)
    Printer.Line (4, 32)-(90, 32)
    Printer.Line (14, 30)-(28, 30)
    Printer.Line (14, 31)-(28, 31)
    Printer.Line (4, 35)-(90, 35)
    Printer.Line (4, 38)-(90, 38)
    Printer.Line (4, 41)-(90, 41)
    Printer.Line (25, 39)-(52, 39)
    Printer.Line (4, 44)-(90, 44)
    Printer.Line (14, 43)-(52, 43)
    Printer.Line (4, 56)-(90, 56)
    Printer.Line (4, 58)-(90, 58)
    Printer.Line (4, 60)-(90, 60)
    
    Printer.Line (52, 16)-(90, 16)
    Printer.Line (52, 17)-(90, 17)
    Printer.Line (52, 18)-(90, 18)
    Printer.Line (14, 47)-(90, 47)
    Printer.Line (14, 50)-(90, 50)
    Printer.Line (14, 53)-(90, 53)
    Printer.Line (14, 53)-(90, 53)


' 文字
    Locate 38, 5 * 1.2, "印刷作業指図伝票"      
    Locate 64, 9, "作業指図コード"          
    Locate 65.5, 10, "担当"
    Locate 73.5, 10, "工務部"
    Locate 83, 10, "印刷G"
    Locate 6, 9 * 1.2, "調製部御中"                
    Locate 6, 13, "発行日 "                  
    Locate 5, 14, "得意先"
    Locate 5, 17, "書名"
    Locate 5, 19, "奥付"
    Locate 5, 21, "判型"
    Locate 5, 24, "部数"
    Locate 5, 27, "下版形態"
    Locate 5, 30, "印刷色数"
    Locate 5, 33, "作業号機"
    Locate 5, 36, "刷版数"
    Locate 5, 39, "納本表示"
    Locate 23, 39, "部"
    Locate 32, 39, "部"
    Locate 41, 39, "部"
    Locate 50, 39, "部"
    Locate 5, 42, "使用紙"
    Locate 5, 50, "用紙枚数"
    Locate 5, 57, "総連数"
    Locate 5, 59, "完納日"
    Locate 30, 21, "頁数"
    Locate 30, 24, "台数"
    Locate 30, 27, "下版日"
    Locate 29, 30, "指定刷色"
    Locate 29, 33, "印刷開始"
    Locate 29, 36, "印刷完了"
    Locate 50, 19, "刷"
    Locate 27, 38, "刷出"
    Locate 37, 38, "折"
    Locate 45, 38, "全紙"
    Locate 61.5, 14, " 仕様・備考"
    Locate 50, 15, " 天地"
    Locate 59, 15, "  小口"
    Locate 69, 15, " 開き"
    Locate 79, 15, " 仕様"
    Locate 51, 17, " 折単位"
    Locate 61, 17, " 袋位置"
    Locate 70, 17, " 袋裁ち"
    Locate 80, 17, " その他"
    Locate 15, 29, "表"
    Locate 15, 30, "裏"
    Locate 15, 31, "計"
    Locate 24, 29, "色"
    Locate 24, 30, "色"
    Locate 24, 31, "色"
    Locate 32, 57, "連"
    Locate 52, 57, "枚"
    Locate 37, 59, "搬入先"
    Locate 16, 45, "実用数"
    Locate 15, 48, "製本予備"
    Locate 15, 51, "印刷予備"
    Locate 17, 54, "合計"

    Printer.EndDoc
End Sub

以上です。
すみませんが、よろしくお願いします。

投稿時間:2003/07/31(Thu) 13:39
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: printer.lineで縦線だけが出力されない
Line の単位は文字単位の長さで指定されているかと思います。
私のサンプルでは Private Sub Locate(X As Long, Y As Long, myStr As String) を
呼んでから罫線を引いておりますので、Printer.ScaleMode = vbCharacters  に設定されて
いるので問題ないのですが、貴方のサンプルでは、最初 Twip 単位で罫線が引かれ、上記関数
を実行後はキャラクター単位に変更されるから、そのような現象がおきます。
フォントの指定の後にでも Printer.ScaleMode = vbCharacters  を追加して見て下さい。
又、フォントサイズは3の倍数のフォントサイズを使用するようにして下さい。

投稿時間:2003/07/31(Thu) 14:15
投稿者名:冬季
Eメール:
URL :
タイトル:
Re^6: ありがとうございます、解決しました。
花ちゃん様、ご返信ありがとうございました。
ご指摘の通りPrinter.ScaleMode = vbCharactersを追加してみたところ、
無事出力することが出来ました。
色々お手数おかけして申し訳ありません、ありがとうございました。

投稿時間:2003/07/31(Thu) 11:05
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: printer.lineで縦線だけが出力されない
> こちらのHPにある印刷関係の、printer.lineを使って罫線印刷する方法を
> 使わせて頂いているのですが、
ひょっとして、データーを表形式で印字する(024)のサンプルでしょうか
すみません。バグです。

    CharX = Printer.TextWidth("あ")     'プリンタ上での文字の幅を取得
    CharY = Printer.TextHeight("あ")    'プリンタ上での文字の高さを取得
この部分は、フォントとフォントサイズを指定後に取得しないと正しい値に
なりません。
MS 明朝の12ポイントをお使いなら
    CharX = 2
    CharY = 1

に変更して頂くか、下記のように表用のフォントとサイズを指定後に取得するように変更
して見て下さい。
    Printer.FontSize = 12
    Printer.FontName = "MS 明朝"
    CharX = Printer.TextWidth("あ")     'プリンタ上での文字の幅を取得
    CharY = Printer.TextHeight("あ")    'プリンタ上での文字の高さを取得