0

TNTコントロールでDelphi7を使用しています。Win7 で最新の [開く/保存] ダイアログを呼び出す方法はありますか? 多分VCLへのパッチ、TNTへのパッチ?Unicode 対応のダイアログが必要なため、TNT パッチが推奨されますが、VCL パッチも必要になる場合があります (少ない)。

4

1 に答える 1

3

おそらく最も簡単な方法は、API 関数GetOpenFileNameGetSaveFileName直接呼び出すことです。これらは、難解な機能を使用しない限り、Vista 以降では最新のダイアログを表示します。

明らかに、W バリアントを呼び出し、構造体の W バージョンを渡す必要があります。

これが私が構築できる最も簡単な例です:

var
  ofn: TOpenFilenameW;
  FileName: array [0..MAX_PATH-1] of WideChar;
begin
  FillChar(ofn, SizeOf(ofn), 0);
  ofn.lStructSize := SizeOf(ofn);
  ofn.hWndOwner := Handle;
  ofn.lpstrFilter := 'All files'#0'*.*'#0;
  FileName[0] := #0;
  ofn.lpstrFile := @FileName;
  ofn.nMaxFile := Length(FileName);
  ofn.lpstrTitle := 'Select File';
  if GetOpenFileNameW(ofn) then
    MessageBoxW(Handle, FileName, nil, MB_OK);
end;

当然、これを拡張してより多くの機能を持たせることができます。

于 2013-05-16T18:16:25.430 に答える