| はじめまして。hahahaと申します。
 いつも参考にさせていただいております。
 
 印刷プレビュー+プリンタ設定の組み合わせで
 複数のプリンタ or Fax(Microsoft Fax)を切り替えて印刷しています。
 しかし、切替がうまくいかないので書込みさせていただきました。
 設定ファイルを2つ作成し、各々の設定でプレビューします。
 プレビューではうまく切り替わるのですが、実際に印刷すると
 それ以降、印刷した設定に全て乗っ取られてしまいます。
 お手すきの時で結構ですので、確認してはいただけないでしょうか?
 
 WindowsXp(sp2),Delphi7の環境です。
 TPを転記いたします。
 var
 CuFile: String;        //保存ファイル名
 
 {■Method:プレビュー【LBP】}
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 plSetPrinter1.LoadFromFile('test.def');
 
 plPrev1.BtnOptions:=plPrev1.BtnOptions+[boPrinterSetBtn];
 plPrev1.ProcName  :=TestPrint;
 plPrev1.ShowModal;
 plPrev1.OnPrinterSetupDialog:=        nil;
 end;
 
 {■Method:プレビュー【FAX】}
 procedure TForm1.Button4Click(Sender: TObject);
 begin
 plSetPrinter1.LoadFromFile('FAX.def');
 
 plPrev1.BtnOptions:=plPrev1.BtnOptions+[boPrinterSetBtn];
 plPrev1.ProcName  :=TestPrint;
 plPrev1.ShowModal;
 plPrev1.OnPrinterSetupDialog:=        nil;
 end;
 
 {■Method:設定保存【LBP】}
 procedure TForm1.Button2Click(Sender: TObject);
 begin
 CuFile:= 'test.def';
 plSetPrinter1.LoadFromFile(CuFile);
 
 plPrev1.BtnOptions:=plPrev1.BtnOptions+[boPrinterSetBtn];
 plPrev1.ProcName  :=TestPrint;
 plPrev1.OnPrinterSetupDialog:=        plPrevPrinterSetupDialog;
 plPrev1.ShowModal;
 plPrev1.OnPrinterSetupDialog:=        nil;
 end;
 
 {■Method:設定保存【FAX】}
 procedure TForm1.Button3Click(Sender: TObject);
 begin
 CuFile:= 'FAX.def';
 plSetPrinter1.LoadFromFile(CuFile);
 
 plPrev1.BtnOptions:=plPrev1.BtnOptions+[boPrinterSetBtn];
 plPrev1.ProcName  :=TestPrint;
 plPrev1.OnPrinterSetupDialog:=        plPrevPrinterSetupDialog;
 plPrev1.ShowModal;
 plPrev1.OnPrinterSetupDialog:=        nil;
 end;
 
 {■Event:プリンタ設定変更時(ファイル保存)}
 procedure TForm1.plPrevPrinterSetupDialog(Sender: TObject);
 begin
 {設定した内容をplSetPrinter1のものとする}
 plSetPrinter1.GetPrinterInfo(False);
 {iniファイルに情報を保存}
 plSetPrinter1.SaveToFile(CuFile);
 end;
 {□Method:テスト印刷}
 procedure TForm1.TestPrint;
 begin
 plPrev1.FontHeight (120);
 plPrev1.TextOut(250,300,'[プリンタの設定]の保存と読出し');
 end;
 
 ※この現象、実は回避策を施しています。
 plSetPrinter1.LoadFromFile(CuFile);
 のあとに、
 plPrev1.plSetPrinter:= plSetPrinter1;
 を実行すればうまくいくのですが、
 このような仕様なのでしょうか?
 
 長い文章になってしまいました。申し訳ありません。
 
 |