2012-04-01 7 views
2

私はTSaveDialogを持つフォームを持っています。 Execute関数を呼び出すと、IDEから実行中にポップアップしません。スタンドアロンで実行している場合、ポップアップを実行します。それを多少試してみると、TSave/TOpenのすべてのダイアログが機能しないことがわかりました。動作していないということは、ExecuteがポップアップなしでFalseを返すことを意味します(更新されたコード例を参照してください:常に「False」というメッセージがダイアログの前に表示されません)。 他のダイアログ(フォント/色/等)do作品。標準ダイアログボックスがポップアップしません

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    if OpenPictureDialog1.Execute 
     then ShowMessage ('True') 
     else ShowMessage ('False'); 
end; 

デバッグなしで実行すると、ダイアログボックスが表示されません。リリース構成とデバッグ構成が選択されているかどうかは関係ありません。

明らかにIDEは奇妙なことをしています。フォームには2つのTSaveDialogコンポーネントがあり、両方とも同じ動作を表示します。

何が悪いと思いますか?

更新1 Windows 7のDelphi XEを使用する他のプロジェクトでは、TSaveDialogsがうまく動作します。

更新2 TSaveDialogについての最初の質問は、すべてのTSave/TOpenダイアログに適用されていました。この知識を含むように質問が編集されました。

更新3私はこれに匹敵するエラーのlinkを見つけました。しかし、私はレジストリをチェックしましたが、上記のように実行可能ファイルが見つかりませんでした。また、TSaveDialogはIDEの外で正常に動作するため、XPとの互換性を変更するヒントはimhoには適用されません。

+0

どのバージョンのDelphiですか? – kobik

+0

savedialogだけで別のアプリケーションを作成すると、IDEは同じように動作しますか? – vickd

+1

おそらく、デバッガ下で実行されるときに伸びるシェル拡張です。私は似たような経験があります。クリーンなWindowsインストールを試してください。 –

答えて

6

XE2を使用している場合は、Project Options Environmentブロックの「User Overrides」にエントリがないことを確認する必要があります。 "Include System Variables"は動作しておらず、それがなければ、環境変数で囲まれた環境変数のみが環境ブロック内にあり、EXEが開始されますが、Open/Saveダイアログには "SystemDrive"や " SystemRoot "を選択します。

また、 "Include System Variables"オプションを修正するIDE Fix Packをインストールすることもできます。

+0

私はDelphi XEを使用して説明する必要がありますが、質問が更新されました。 IDE Fix Packはこのような状況には当てはまりません。 – Arnold

+0

それはしません。 XEで "Include System Variables"が機能します。 –

+1

とにかく、あなたのウェブサイトは面白い読書をします。私はDelphiがそのような時限爆弾であることを知らなかった:-)。 IDEフィックスパックをインストールし、Delphiの機能が向上しているかどうかを確認します。私にそれを指摘してくれてありがとう! – Arnold

関連する問題