Delphi Tips 
-----------------------------

0122  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 1999/02/08 osamu rev 1.4
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 1999/09/25 西坂良幸 編集
TSaveDialogでファイルタイプが変更されたらファイル拡張子を変更したい

Excelなどの「名前を付けて保存」でしているように 選択されたファイルタイプに応じて拡張子の部分を変更したいのですが。

TSaveDialogをはりつけて、Filterプロパティを以下のようにしたとします.
Filter  -> 'テキストファイル(*.txt)|*.txt|アイコンファイル(*.ico)|*.ico|カンマテキスト(*.csv)|*.csv|'

uses  Dlgs,Commdlg;

procedure TForm1.SaveDialog1TypeChange(Sender: TObject);
var
  DlgParent: HWND;
  StrFileName, StrExt: string;
begin
  DlgParent := GetParent(TSaveDialog(Sender).Handle);
  Case SaveDialog1.FilterIndex of
    2: StrExt := '*.ico';
    3: StrExt := '*.csv';
    else StrExt := '*.txt';
  end;

  StrFileName := ChangeFileExt(TSaveDialog(Sender).FileName, StrExt);
  SendMessage(DlgParent, CDM_SETCONTROLTEXT, Edt1, Longint(PChar(StrFileName)));
end;

// テスト
procedure TForm1.Button1Click(Sender: TObject);
begin
  SaveDialog1.Execute;
  Label1.Caption := SaveDialog1.FileName;
end;


Filterを切り分けて、Filterindexに拡張子をセットする処理ルーチンは省略していますが、やり方はわかると思います。
参照: [Delphi-ML:38586] [builder:7802] <ダイアログ>

[新規作成] [最新の情報に更新]

How To
Lounge
KeyWords


Tips
Delphi
Home
Osamu Takeuchi osamu@big.or.jp