OS:WindowsServer2012R2
言語:Delphi2007 for Win32
次のコードで、Win2012R2で「保存」ボタンをクリックしても、キャンセルボタンをクリックしたのと同じ挙動になります。
with SaveDialog do begin
if not(DirPath = '') then begin
InitialDir := DirPath;
end;
FileName := PV.IFile;
if not Execute then begin
// キャンセルボタン押下
Exit;
end;
// 保存ファイル名取得
strFile := FileName;
end;
end;
ShowMessage関数でウオッチすると、必ず「保存」ボタンをクリックしても not Execute になってしまい、関数をExitしてしまいます。
ShowMessage関数でウオッチしないと、2回に1回の割合で保存が出来るようです。
明らかにコモンダイアログの挙動が変なのですが、どんなに調べても分かりません。
どなたか何かご存知なことや、ヒントでも結構ですので、ご教授願えませんでしょうか。
ShiftJIS問題でDelphiのバージョンアップが出来ない状態なので、困り果ててます。
ちなみに、新規プロジェクトで、ボタンとSaveDialogだけを配置して
テストした場合にも、同じ現象が起きますか?
また、(関係ないかもしれませんが)Delphi2007は、
最新のUpdateは適用されてますか?
あと、
Delphi 2007 について
http://support.embarcadero.com/jp/article/36424
に
> これを望まないのであれば、オリジナルの行動を強制するために、プログラムの始めに、
> グローバル変数である UseLatestCommonDialogs を Falseに設定してください。
あるので、これを試してみるとか・・・
igyさん、返信ありがとうございます。
>また、(関係ないかもしれませんが)Delphi2007は、
>最新のUpdateは適用されてますか?
最新のアップデータは適用していないと思います。
アップデータというより、ほとんど再インストールに近いようですし・・・。
ご教授いただいた、
> グローバル変数である UseLatestCommonDialogs を Falseに設定してください。
で、コモンダイアログの挙動が正常になりました。ありがとうございます。
コモンダイアログが古いバージョンになってしまうので、社内で反発があるかも知れませんが、これで押し通そうと思います。
一応、これで「解決」とさせていただきます。ありがとうございました。
Server 2012 R2環境ということはx64なのですよね?
面倒に思われるかもしれませんが最新環境(Update 3 + December Update + Apr08 Hotfix + http://cc.embarcadero.com/item/27521 )にしておいたほうが
いいですよ。
通りすがりさん、アドバイスありがとうございます。
やっぱり最新環境にしておかなきゃダメですよね〜。
ツイート | ![]() |