いつもお世話になります。散々調べたのですが判らず質問させていただきます。
掲題のとおり、ファイル保存ダイアログを表示した後、ファイル名を指定せずに保存ボタンをクリックした時などに、エラーメッセージを出したいのですが、ダイアログに隠れて表に出てきません。どのようにしたらよいのでしょうか?
よろしくお願いいたします。ダイアログを消すか、メッセージを表に出すか、のいずれでもいいのですが。なお、例外処理の基本的な構文はわかっております。
>ファイル名を指定せずに保存ボタンをクリックした時などに、エラーメッセージを出したいのですが、ダイアログに隠れて表に出てきません。
エラー表示のダイアログが隠れているなんて、どうやって調べたの?
ファイル名が空白のまま保存ボタンを押した時、例外など発生しないけど。
はてな、さん読んで頂いて有り難うございます。
質問内容が舌足らずでした。D2007で、ファイル保存ダイアログでSTGの内容を保存するようなプログラムを作っています。何気なく、ファイル名を空白のまま保存ボタンを押したところ、FI/Oエラーのメッセージがでて止まってしまいました。当然ですよね。そこで、try〜except手続きで例外処理を組み込み、showmessage(−−);exit;とやったのですが、showmessageが、ファイル保存ダイアログの下に隠れて前面に出てこないのです。無論、ファイル保存ダイアログをキャンセルすれば見えるのですが。その後いろいろ調べて、WINDOW操作のAPIを使えばいいんではないかというところまでは判ったのですが、APIの使い方がよく判らず苦闘しております。
標準装備の「Save Dialog」を使ってるんだよね?
ファイル名が空白のまま保存ボタンを押した時には、ダイアログは閉じないし、何も例外など発生しないけど。
D2007では、その瞬間に例外が出る?
はてな、さん早速有り難うございます。
>標準装備の「Save Dialog」を使ってるんだよね?→そうです。
D2007でしか試していないのですが、出ます。
実行ファイルを他のPCで試してみます。
今から、現場に行かなければならなくなりました。後ほど結果ご連絡いたします。
横槍のようで恐縮ですが
当方 D2007 ですが
ファイル名が空白のまま保存ボタンを押した時にダイアログは閉じないし、例外も発生しないようです。
そうなの、さん。大変申し訳ありません。慌てていたものですから名前を間違ってしまいました。
皆さん、例外が発生しないということですが、確かにI/Oエラーが表示されました。が、だんだん自信がなくなってきました。もう一度、コードを見直して試して、またご報告致します。
皆さんいろいろ有り難うございます。
> 皆さん、例外が発生しないということですが、
> 確かにI/Oエラーが表示されました。
入門時に、ReadOnly を上書き・削除しようとするとI/Oエラーが出たという記憶があります。それ以来、
同名ファイルの有無を確認
あれば ReadOnly か否か確認
ReadOnly であれば外す
という手続きを、保存ファイル名取得後に実行するようにしています。
ディスク容量が不足する場合にもエラーが出たような気がします。
そうなると、毎回ディスク容量残も確認しなければなりませんが、一度に何万という画像ファイルを自動で作成するようなプロジェクトの場合にはやはりそうしています。