上書き保存の時に確認ダイアログを出すには?


sox  2006-04-08 13:15:12  No: 20919  IP: 192.*.*.*

Delphiに標準でついている、SaveDialogでは上書き確認ができないのですが、どのようにすればできるのでしょうか?

編集 削除
Mr.XRAY  URL  2006-04-08 14:38:33  No: 20920  IP: 192.*.*.*

今,手元のDelphi5でやってみましたが,私のDelphi5では上書き確認の
ダイアログが出ますね.OptionのofOverwritePromptがFalse(デフォルト)
のままになってるということはないですよね.

Trueにしてあるとすると,そのDelphiは壊れている可能性がありますね.
再インストールしてみたらどうなりますか.

編集 削除
sox  2006-04-08 16:24:36  No: 20921  IP: 192.*.*.*

SaveDialogで上書き確認をやらず、自分で上書き確認の処理を書くとどうなりますか?

編集 削除
may_wind  2006-04-08 17:29:42  No: 20922  IP: 192.*.*.*

>自分で上書き確認の処理を書くとどうなりますか?
そりゃ、当然その名前のファイルがあるかどうか調べて、自分の好きな
ようにダイアログを表示したり処理するんでしょうね。

どうなるかは貴方次第。

編集 削除
Mr.XRAY  URL  2006-04-09 22:58:37  No: 20923  IP: 192.*.*.*

>SaveDialogで上書き確認をやらず、
Optionの方はどうなったのでしょう.最初の質問は

>自分で上書き確認の処理を書くとどうなりますか?
既にレスがありますが,もちろん自分で書いても構いません.
その場合,どうなるかは,
プログラムする本人(処理内容)次第ということになります.

編集 削除
delphi forever  2006-04-11 15:30:31  No: 20924  IP: 192.*.*.*

私はいつもFileExistsで調べています。
ベタで書くならば、次のような感じ。

 if SaveDialog1.Execute then
 begin
     if FileExists(SaveDialog1.FileName) then

      if (MessageDlg('overwrite?',
        mtConfirmation,[mbYes,mbNo],0)<>mrYes) then Exit;

     try
        Something.SaveToFile( SaveDialog1.FileName);

     except
      MessageDlg('i/o error maybe',mtInformation,[mbOK],0)
     end
 end;

MessageDlgはF1キーのヘルプで調べてください。
mbOK に対応する リターンは mrOK のように b と r の部分が違うんで
ヘルプを参照して型を確認してください。

exceptは、たぶんいりません。同じような例外表示が普通に出ます。
Delphi製アプリって謎なエラー表示が多いんだけどってユーザーに
思われたくない場合は、キャッチして処理したほうがよいでしょう(汗)

編集 削除