-1

私は、C++ Builder 2009 で構築された、長い間変更されていない古いアプリケーションを持っていますが、それでも問題なく動作します。つまり、..今日TSaveDialog->Options、Windows 10 システムで意図したとおりに動作しないものがあることに気付きました。夢ではないことを確認するために、古い Windows バージョン (XP を試しました) で同じアプリケーションをテストしたところ、意図したとおりに完全に正常に動作しました。

TSaveDialogインスタンスは、設計時に次のようにセットアップされOptionsます 。[ofHideReadOnly,ofAllowMultiSelect,ofEnableSizing]

ofAllowMultiSelect今日(Windows 10で)それがもう機能しないことに気付きましたか?代わりofOverwritePromptに (誤って) 使用されます ! つまり、2 つ以上のファイルを選択できなくなり、既に存在するファイルを選択すると、最初に [名前を付けて保存を確認] ダイアログが表示されます。

Windows 10 システムで、C++ Builder 2009 を使用してデバッグ モードと inspect を使用して再度コンパイルすると、デバッガーは, ,Optionsを (まだ) 正しく認識しているように見えますが、問題は解決しません。値が何らかの形で変更されたわけではありませんか?ofHideReadOnlyofAllowMultiSelectofEnableSizing

実行時に試すと:

SaveDialog->Options.Clear() ;
SaveDialog->Options << ofHideReadOnly << ofEnableSizing << ofAllowMultiSelect ;

問題も解決しません。

(実行時または設計時に)削除すると、ofAllowMultiSelect「名前を付けて保存を確認」が既存のファイルに表示されなくなります(ただし、明らかに複数のファイルを選択することもできません)。

正直に言うと、私はこれに驚いていますか?次に何をすべきかわからない?最新の C++ バージョンをテストするオプションはありませんが、ここでコンパイラがどのように責任を負うのかを理解するのも困難です。

任意のガイダンスをいただければ幸いです。
c++ Builder と Delphi の間で VCL が重複しているため、Delphi タグが追加されました

4

1 に答える 1