印刷時にドライブアクセスを回避するには

解決


Taku  2003-04-16 04:21:03  No: 3326

いつも、お世話になります
テスト的に、下のプログラムを実行した時に

procedure TForm1.Button1Click(Sender: TObject);
begin
     if SaveDialog1.Execute then
        Memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
     if PrintDialog1.Execute then
     begin
          Printer.BeginDoc;
          Printer.Canvas.TextOut(0,0,Memo1.Lines[0]);
          Printer.EndDoc;
     end;
end;

保存を3.5FDに行い、ディスクを抜いた後
印刷を実行すると、FDドライブにアクセスしてエラー表示します。
プログラムには、問題ないので印刷はされますが
事前に、FDアクセスしないように出来る方法は無いでしょうか?
(Win2000+Delphi7です)
よろしくお願いします。


にしの  2003-04-19 08:40:22  No: 3327

SaveDialog.Executeが成功すると、カレントパスが、そのとき選んだファイルのパスに変更されます。
# つまり、A:\test.txtに保存したらA:\に

これ(カレントパス)が原因っぽいので、Executeに成功したら、SetCurrentDir(ExtractFileDir(Application.ExeName));などで適当な場所に戻してやれば、アクセスしなくなると思います。


Halbow  2003-04-19 12:00:53  No: 3328

カレントパスの変更が原因でしたら、TOpenDialog の Option プロパティー
に、予め ofNoChangeDir を true にしておけばよいのでは?


Halbow  2003-04-19 12:03:06  No: 3329

すみません、↑ の TOpenDialog を TSaveDialog に読み替えてください


にしの  2003-04-19 20:43:01  No: 3330

そういうのがあったんですね。気づきませんでした。


Taku  2003-04-21 22:35:46  No: 3331

にしのさん、Halbowさん  有難うございます
18〜20日まで、掲示板をチェックできなくて、お返事が遅れてしまいました。

ofNoChangeDirなんて言うのが有ったんですね
暫くレスが無かったので、あきらめていましたが
プロパティーで簡単に対応できたので助かりました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加