トップ回答者
帳票印刷時の用紙設定等を保存しておきたい

質問
-
はじめまして、プログラミングをするようになって
まだ日が浅い者ですが、よろしくお願いします。
Accessのレポートで出力していた帳票を
VB.NET&ActiveReports(GrapCity社)を使用し出力できるよう
移行しているのですが、Accessのレポートで印刷を行う時
レポートをプレビューして「ファイル」-「ページ設定」で
「ページ」タブの「プリンタの設定」ボタンをクリックして表示される
プリンタ設定画面の変更内容は、次回レポートを印刷する際にも
適用されると思うのですが、これと同じことがVB.NET&ActiveReportsでも
可能でしょうか?
印刷関係ではPrintDialogやPageSetupDialogを使用するということは
分かったのですが、ユーザ毎にプリンタ・用紙サイズ・両面印刷などの
設定が違うので、アプリケーション設定ファイルに保存して
次回、印刷&プレビュー時に保存した値でプリンタ設定画面を表示するという
部分が分かりません。
どなたかアドバイスを頂けると助かります。
お手数ですがよろしくお願いします。
環境 VS2005 .NET Framework 2.0(言語VB)
PC Windows2000 SP4
帳票コンポーネント ActiveReports for .NET 3.0J
回答
-
外池様、早速のアドバイスありがとうございます。
私の説明が不足していましたので追記させて頂きます。
1)についてですが現在My.Settingsオブジェクトを使用しています。
スコープをユーザーにすることで個別の設定が保存できると聞きました。
2)についてですがプリンタ名、給紙トレイ、用紙サイズ、余白、印刷の方向を
ひとつひとつプログラミングしている感じなのですが、両面印刷やカラーといった
プリンタ固有の設定も保存しておく必要性が出てきまして、どうしたものかと悩んでおりました。
ひとつひとつ書くのではなく、一括して行える方法はないものかと。。。
外池様がおっしゃるシリアライズについて調べてみようと思います。
3)についてですが私も疑問に思っています。
Accessの方では作成側が意識しなくともプリンタ固有の設定を
保存してくれているようなので、これと同じことがVB.NETでもできるのかどうか。。。
まずはシリアライズについて調べてから出直してきますので
この質問は一旦〆させて頂きます。
ありがとうございました。
すべての返信
-
外池と申します。
VB.NET&ActiverReportsでも可能か? というご質問に対しては、概ね「可能です」という答えになりますが、詳細は、結構な仕事量になります。
1)印刷設定に限らず、一般論として、アプリケーションの設定をユーザーごとに分けて保管する方法。これは、いろんな方法があると思いますが、とりあえず簡単なのは、My.Settingsオブジェクトを利用する方法かと・・・。他にも、My.Computer.Registryでレジストリーを使うこともできますが。
2) 次に、今回お尋ねの印刷関係の設定を保存するとして、項目(ページサイズ、余白設定などなど)ごとの保存操作を、みぃさんご自身が、ひとつひとつプログラミングしていくのか? それとも、これらの設定を一括して保持しているPageSettingsオブジェクト、さらに、プリンターの動作条件を設定するPrinterSettingsオブジェクトを、ファイルのような一連のデータ列にした上で(シリアライズと呼ばれる操作で自動的にやってくれる機能あり)書き込むのか? の選択。(シリアライズするのが簡単のハズですが、シリアライズの勉強が必要ですよね?)
3) 最後に、ここは、ちょっと私も疑問なのですが、プリンターに依存した細かい設定が、本当に保存可能かどうか良く確認すること。上述のPageSettingsやPrinterSettingsのオブジェクトで扱える範囲を超えると、VB.NETでは簡単には取り扱えないように思います。
で、まとめて、キーワードを並べておくと、
設定の保存に関してはMy.Settings。
印刷設定に関しては、PageSettingsとPrinterSettings(いずれも、PrintDocumentのプロパティーから辿れるものです。)。
---- これまた、自分で、ごちゃごちゃやってみたので追記・・・。
My.Settingsを使えば、シリアライズできるオブジェクトの内容は、大抵のものがその状態を保管できるようです。My.Settingsで、PrinterSettingsもPageSettingsもそのまま保管できます。しかも、ユーザーごとに別々に。で、保管される場所ですが・・・、
Document and Settings\ユーザー名\Local Settings\Application Data\アプリ名\アプリ名その他の呪文
というフォルダの下に、さらに、アプリのバージョンごとにフォルダができて・・・、user.configというxml形式ファイルができる、と。
-
外池様、早速のアドバイスありがとうございます。
私の説明が不足していましたので追記させて頂きます。
1)についてですが現在My.Settingsオブジェクトを使用しています。
スコープをユーザーにすることで個別の設定が保存できると聞きました。
2)についてですがプリンタ名、給紙トレイ、用紙サイズ、余白、印刷の方向を
ひとつひとつプログラミングしている感じなのですが、両面印刷やカラーといった
プリンタ固有の設定も保存しておく必要性が出てきまして、どうしたものかと悩んでおりました。
ひとつひとつ書くのではなく、一括して行える方法はないものかと。。。
外池様がおっしゃるシリアライズについて調べてみようと思います。
3)についてですが私も疑問に思っています。
Accessの方では作成側が意識しなくともプリンタ固有の設定を
保存してくれているようなので、これと同じことがVB.NETでもできるのかどうか。。。
まずはシリアライズについて調べてから出直してきますので
この質問は一旦〆させて頂きます。
ありがとうございました。