はじめまして。Delphi5を使用しています。
SaveDialogコンポーネントで、メモ帳の「名前を付けて保存」ダイアログを表示するには、どのようにすればよいのでしょうか?
デスクトップやマイドキュメント、マイコンピュータなど、メモ帳の「名前を付けて保存」ダイアログに表示されているようにしたいのですが、SaveDialogコンポーネントで表示させることはできるのでしょうか?
ご教授よろしくお願いします。
Delphi6からだと使えるみたいですね...。
choさん、返答ありがとうございます。
Delphi6だと使えるんですね。Delphi5は無理なんですね;;
Delphi5の場合だとWindowsAPIなどで、メモ帳の「名前を付けて保存」ダイアログを表示させることは可能でしょうか?
手抜きして、こんな感じ
D5でWinXPとWinNT4.0(今までと同じダイアログになることを)で確認
type
TSaveDialog500 =class(TSaveDialog)
protected
function TaskModalDialog(DialogFunc: Pointer; var DialogData): Bool; override;
end;
function TSaveDialog500.TaskModalDialog(DialogFunc: Pointer; var DialogData): Bool;
type
TOpenFilename500 = packed record
OpenFilename: TOpenFilename;
pvReserved: Pointer;
dwReserved: DWORD;
FlagsEx: DWORD;
end;
var
dlgData: TOpenFilename;
dlgData500: TOpenFilename500;
begin
dlgData := TOpenFilename(DialogData);
CopyMemory(@dlgData500, @dlgData, SizeOf(TOpenFilename));
dlgData500.pvReserved := nil;
dlgData500.dwReserved := 0;
dlgData500.FlagsEx := 0;
{ Win2k or WinME 以降}
if (Win32MajorVersion >= 5) and
(Win32Platform = VER_PLATFORM_WIN32_NT) or { Win2k }
((Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and
(Win32MajorVersion >= 4) and
(Win32MinorVersion >= 90) ) then begin
dlgData500.OpenFilename.lStructSize := SizeOf(TOpenFilename500);
end;
Result := inherited TaskModalDialog(DialogFunc, dlgData500);
end;
果汁10%さん、返答ありがとうございます。
教えて頂いたコードを入れてコンパイルしたのですが、
「未定義の識別子」:'EnumWndProc'などのコンパイルエラーが出てしまい
コンパイルができないんです。
勉強不足ですみませんが、ほかにも追加しなければならないものが
あるのならばご教授願います。
果汁10%さんのコードに、EnumWndProc はありませんよ?
もともとエラーが出ていたのでは?
新しいプロジェクトを作って、それで試してみたらどうですか?
ひみつ日記さん、返答ありがとうございます。
言われたとおり、新しいプロジェクトでコンパイルをかけたら
「EnumWndProc」 は出ませんでした。
ご指摘ありがとうございます。
果汁10%さんに教えていただいたコードでやってみます。
みなさん、ありがとうございました。
ツイート | ![]() |