他のアプリ(メモ帳)のような保存ダイアログを表示するには?

解決


4610  2006-10-06 00:50:52  No: 23481

はじめまして。Delphi5を使用しています。

SaveDialogコンポーネントで、メモ帳の「名前を付けて保存」ダイアログを表示するには、どのようにすればよいのでしょうか?

デスクトップやマイドキュメント、マイコンピュータなど、メモ帳の「名前を付けて保存」ダイアログに表示されているようにしたいのですが、SaveDialogコンポーネントで表示させることはできるのでしょうか?

ご教授よろしくお願いします。


cho  2006-10-06 01:37:54  No: 23482

Delphi6からだと使えるみたいですね...。


4610  2006-10-06 01:54:38  No: 23483

choさん、返答ありがとうございます。

Delphi6だと使えるんですね。Delphi5は無理なんですね;;

Delphi5の場合だとWindowsAPIなどで、メモ帳の「名前を付けて保存」ダイアログを表示させることは可能でしょうか?


果汁10%  2006-10-06 03:35:36  No: 23484

手抜きして、こんな感じ
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;


4610  2006-10-06 04:00:50  No: 23485

果汁10%さん、返答ありがとうございます。

教えて頂いたコードを入れてコンパイルしたのですが、
「未定義の識別子」:'EnumWndProc'などのコンパイルエラーが出てしまい
コンパイルができないんです。

勉強不足ですみませんが、ほかにも追加しなければならないものが
あるのならばご教授願います。


ひみつ日記  2006-10-06 07:24:42  No: 23486

果汁10%さんのコードに、EnumWndProc はありませんよ?
もともとエラーが出ていたのでは?
新しいプロジェクトを作って、それで試してみたらどうですか?


4610  2006-10-10 22:05:36  No: 23487

ひみつ日記さん、返答ありがとうございます。

言われたとおり、新しいプロジェクトでコンパイルをかけたら
「EnumWndProc」 は出ませんでした。

ご指摘ありがとうございます。

果汁10%さんに教えていただいたコードでやってみます。

みなさん、ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加