简单的对话框问题(50分)

G

gwdb

Unregistered / Unconfirmed
GUEST, unregistred user!
对于SaveDialog控件:
怎么样才能使用户选择不同的Filter时自动更改SaveDialog1.FileName里的扩展名?
在使用中,用户选择了一个扩展名为DBF的文件,第一次SaveDialog1.FileName的值为"c:/test.dbf"
但是当选中了"c:/test.dbf"后,再改变SaveDialog控件的Filter时(在对话框上选择),SaveDialog1.FileName的却没有变为"c:/test.txt"
我试图在下面的事件改变,却还是不行。请问谁知道应该怎么样做?
procedure Tfrmmain.SaveDialog1TypeChange(Sender: TObject);
begin

if SaveDialog1.FilterIndex=1 then
SaveDialog1.FileName :=ChangeFileExt(SaveDialog1.FileName,'.dbf')
else
SaveDialog1.FileName :=ChangeFileExt(SaveDialog1.FileName,'.txt')
end;

 
奇怪,怎么没有人愿意回答啊?
帮帮忙嘛
 
procedure TForm1.SaveDialog1TypeChange(Sender: TObject);
begin
SaveDialog1.FileName:=ChangeFileExt(SaveDialog1.FileName,SaveDialog1.Filter)
end;
//真正想实现在SaveDialog正在显示的时候动态显示出后缀,
//IE和Notepad之类的都没有实现那样的效果
//建议不要使用你上面那样的写法
//SaveDialog1.FileName:=ChangeFileExt(SaveDialog1.FileName,SaveDialog1.Filter)
//可以直接加上你选中的后缀,而不会象你那样,文件名字不能加上正确的后缀。
 
昨天重新测试了一下,好象先要给SaveDialog1.DefaultExt赋上不为空的值(比如txt),
然后再在
procedure TMainForm.SaveDialog1TypeChange(Sender: TObject);
begin
//SaveDialog1.DefaultExt:=SaveDialog1.Filter;
//SaveDialog1.FileName:=ChangeFileExt(SaveDialog1.FileName,SaveDialog1.Filter);
end;
上两句中任何一句都可以实现后缀名的变化。
 
lnboy:
你的意思是在SaveDialog1.Execute后再进行替换扩展名吗?
可是通常在用户换扩展名的时候,如果已经选中了前面的一个扩展名的文件,
则,如果不改变文件名的内容,它就会提示是否覆盖,因为我是在选项里选择提示覆盖的
难道没有什么好办法动态改变吗?
 
lnboy:
我又试了一下,还是出现提示原先选择的那个文件是否要覆盖,说明文件名没有动态地改变
 
procedure TForm1.Button2Click(Sender: TObject);
begin
savedialog1.filename:='aaa';
if savedialog1.Execute then
if SaveDialog1.FilterIndex=1 then
SaveDialog1.FileName :=ChangeFileExt(SaveDialog1.FileName,'.dbf')
else
SaveDialog1.FileName :=ChangeFileExt(SaveDialog1.FileName,'.txt');
showmessage(savedialog1.filename);
end;
 
jsxjd:
我是要在用户选择的时候动态改变,然后再根据新的文件名来让对话框自动提示是否存在相同的文件
你这样的方法只是用户选择完按确定返后才起作用的,并不是在显示对话框时动态改变。
 
怎么没有人能解决吗?
 
多人接受答案了。
 
我也遇到这样的问题,把问题提前,值得探讨!
 
顶部