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に拡張子をセットする処理ルーチンは省略していますが、やり方はわかると思います。 |
|