掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ダイアグロボックスを使用しないで、用紙サイズをA4にするには? (ID:141397)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> を参考に記述すれば、エラーも出ずに、なんとかできそうでした。 発見した時点で、「Exit For」にてループ検索を打ち切ったほうが良いでしょう。 さらに言えば、「A4 が見つからなかった場合」に対する動作も決めねばなりません。 たとえば以下の案が思いつきますが……今の段階では c 案が採用されていますね。 (a) A4 が見つからなければ、メッセージを表示して、ユーザーに用紙一覧から選ばせる。 (b) A4 が見つからなかったら、例外を発生させて処理する。 (c) A4 が無ければ、現在設定されている用紙をそのまま使って出力する。 (d) A4 が無い時は、サポートしている中で最も近いサイズの用紙をセットする。 (e) 他のプリンタの中で A4 をサポートする物を探し、それを修正候補にする。 > 用紙サイズを決めるので、どうして、 実行環境が限定されている場合に限って言えば、ループさせずに、 〜 = New PaperSize("A4", 1169, 827) などの記述によって直接代入できます。 ただしこの場合、RawKind = Custom になってしまうため、A4 ではなく、 A4 サイズのユーザー定義用紙の意味になってしまい、ドライバによっては 望ましい結果にならない物も存在するため、事前に動作確認が必要です。 > For Each のループ構文を使うのでしょうか? 何故列挙させねばならないのかというと、.NET Framework 自体の設計に よるものなので仕方ないとも言えるのですが、その実装の背景には、 プリンタドライバごとに使用可能な用紙セットが異なるという事情があります。 たとえば同じ A4 用紙であっても、その用紙名(PaperSize プロパティ)はまちまちです。 「A4 (210x297mm)」… NEC マルチライタ系ドライバ 「A4 210 x 297 mm」… Epson オフィリオ系ドライバ 「A4」… Canon LIPS4 ドライバ この他 OS 付属のプリンタ ドライバ(Microsoft Unidrv)は、「A4」ですね。 また、A4 縦と A4 横で違う用紙名を持つドライバもあります。 加えて、プリンタ側の用紙サポートの違いもあります。たとえば、 はがき印刷用の携帯用小型プリンタでは、A3 や A4 は 印刷はできません。 サポートしていないサイズを指定した場合の動作は、プリンタによって異なります。 (エラーになる物もあれば、別用紙として動作するものもあります) そこで、「サポートされている用紙の一覧」をプリンタ側に問い合わせ、 その一覧の中から選択すると言う設計になっているのだと考えられます。 > VB6ですと、 > Printer.PaperSize = vbPRPSA4 > 一行ですんでいました。 上記のような事情から、この設定が期待通りの結果にならない事もありますが、 その事は、VB6 ヘルプにも記載されていたりします。 》PaperSize プロパティ 》(中略) 》メモ 》 Printer オブジェクトのプロパティを設定する場合、その設定の結果は 》 プリンタ メーカーが提供するドライバによって異なります。プロパティを 》 設定しても効果がなかったり、プロパティに異なる値を設定しても、 》 結果が同じになることもあります。また、有効な範囲を超えた設定を行っても、 》 エラーが発生しないこともあります。ドライバの具体的な情報については、 》 そのメーカーのマニュアルを参照してください。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.