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

投稿時間:2004/03/24(Wed) 16:49
投稿者名:くるりん
Eメール:
URL :
タイトル:
印刷関係での質問です
はじめまして、こんにちわ。わからないことがあるので質問させていただきます。

VBで印刷のプログラムを作っていまして、白、灰色、白、灰色とボックスを入れていく
ところがあるのですが、実際にテスト印刷してみると最初だけ 白、灰色 となってその後はずっと
真っ白なままになってしまいます。
以下のようなコードで行っているのですが、ご指摘を宜しくお願いします。

iflag = 1
ymax = Form1.ymax
xmax = Form1.xmax
printpagecnt = Form1.mtxt.Text

For cnt = 1 To printpagecnt Step 1
    
    For yline = 1 To ymax Step 1
        
        '10個いったら点線を引く 横
        If Right(yline, 1) = 0 Then
            Printer.DrawStyle = 2
            Printer.Line (0, yline * (40 * 6))-(xmax, yline * (40 * 6))
        End If
        
        xcnt = 0
        
        For xline = 0 To xmax
            
            If iflag = 1 Then
                Printer.Line (xline, (yline - 1) * (40 * 6))-(xcnt + 1 * (32 * 6), yline * (40 * 6)), QBColor(11), BF
                iflag = 0
            Else
                Printer.Line (xline, (yline - 1) * (40 * 6))-(xcnt + 1 * (32 * 6), yline * (40 * 6)), QBColor(15), BF
                iflag = 1
            End If
            
            xcnt = xcnt + 1
            xline = xcnt * (32 * 6)
            
            '10個いったら点線を引く 縦
            If Right(xcnt, 1) = 0 Then
                Printer.DrawStyle = 2
                Printer.Line (xline, 0)-(xline, ymax)
            End If
            
            'Printer.EndDoc
            'Exit Function
            
        Next
        
    Next
    
    Printer.NewPage
Next

□■□■□・・・・と、こんな結果にしたいのですが
□■□□□・・・・と、なってしまうのです(TT

投稿時間:2004/03/24(Wed) 23:03
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 印刷関係での質問です
>             If iflag = 1 Then

                  Form1.Cls    ' 追加

>                 Printer.Line (xline, (yline - 1) * (40 * 6))-(xcnt + 1 * (32 * 6), yline * (40 * 6)), QBColor(11), BF
>                 iflag = 0
>             Else

                  Form1.Cls    ' 追加

>                 Printer.Line (xline, (yline - 1) * (40 * 6))-(xcnt + 1 * (32 * 6), yline * (40 * 6)), QBColor(15), BF
>                 iflag = 1
>             End If

上記のように Form1.Cls  を追加して Printer のところを Form1 に置き換えて Form に表示
して確認してみて下さい。 
その場合 F8 キーを押して起動して下さい。

2回目以降どのように表示されるかが解るかと思います。
こういった場合、順を追ってプログラムを実行すれば解るかと思います。
変数の値を イミディエイトウィンドウに表示して見るのもいいかも知れません。  

投稿時間:2004/03/25(Thu) 10:28
投稿者名:くるりん
Eメール:
URL :
タイトル:
Re^2: 印刷関係での質問です
おはようございます。レスありがとうございます。

> 上記のように Form1.Cls  を追加して Printer のところを Form1 に置き換えて Form に表示
> して確認してみて下さい。 
> その場合 F8 キーを押して起動して下さい。
>
> 2回目以降どのように表示されるかが解るかと思います。
> こういった場合、順を追ってプログラムを実行すれば解るかと思います。

わかりました。確認しながらやってみます。

> 変数の値を イミディエイトウィンドウに表示して見るのもいいかも知れません。  

debug.print を入れて、変数も見ながらやってみます。

またわからなくなったら質問したいと思いますので、そのときはよろしくお願いします。

投稿時間:2004/03/25(Thu) 15:19
投稿者名:くるりん
Eメール:
URL :
タイトル:
Re^3: 印刷関係での質問です
こんにちわ。少し変更してがんばってみてたのですが、フォームに出力されずどのように進んでいるか
わからなかったので再度質問させていただきます。

様子見用のform2を作成して、以下のようにコードを一部修正しました。

Form2.show

If iflag = 1 Then
    Form2.Cls
    Form2.Line (xline, (yline - 1) * (40 * 6))-((xcnt + 1) * (32 * 6), yline * (40 * 6)), QBColor(11), BF
    Debug.Print xline, (xcnt + 1) * (32 * 6)
    iflag = 0
else
    Form2.Cls
    Form2.Line (xline, (yline - 1) * (40 * 6))-((xcnt + 1) * (32 * 6), yline * (40 * 6)), QBColor(11), BF
    Debug.Print xline, (xcnt + 1) * (32 * 6)
    iflag = 1
End If
      
最初Form1で動かしてみたのですが、 Form1.Cls のところでForm1に全く変化がみられずその後のLine命令でも表示上に変化が見られませんでした。
また、以前のコードではX軸の指定がきちんと出来ていないということがわかったのでその部分は修正いたしました。

お手数ですがご助言をよろしくおねがいします。

投稿時間:2004/03/25(Thu) 15:52
投稿者名:morimori
URL :
タイトル:
Re^4: 印刷関係での質問です
morimoriと申します。

> 最初Form1で動かしてみたのですが、 Form1.Cls のところでForm1に全く変化がみられずその後のL
ine命令でも表示上に変化が見られませんでした。
> また、以前のコードではX軸の指定がきちんと出来ていないということがわかったのでその部分は
修正いたしました。
的外れでしたら申し訳ないですけど、AutoRedrawプロパティは「True」にしていますか?
「False」の場合だと、変化しないかもしれません。
以上、ご確認下さい。

投稿時間:2004/03/25(Thu) 16:46
投稿者名:くるりん
Eメール:
URL :
タイトル:
ありがとうございました〜。
こんにちは、morimoriさんレス有難うございます。

> 的外れでしたら申し訳ないですけど、AutoRedrawプロパティは「True」にしていますか?
> 「False」の場合だと、変化しないかもしれません。
> 以上、ご確認下さい。

False、になっていました。。
そのようにする必要があるということを知りませんでした・・・。
どうもありがとうございました。
視覚的に見ることができましたので原因を調べていきたいと思います。
本当にありがとうございました。