维护bcb6老程序时发现SaveDialog的一个小bug:
如果点击了SaveDiog1列表中的一个文件,然后重新输入文件名,则SaveDialog1CanClose事件中,SaveDiog1->FileName还是鼠标点击的文件名。OpenDialog也是。用cb10.2测试没有这个问题。
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
SaveDialog1->Execute() ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SaveDialog1CanClose(TObject *Sender,
bool &CanClose)
{
ShowMessage("选中的文件名为:\n" + SaveDialog1->FileName ); //这里的FileName 还是点击的文名,无论后来是否修改
}
//---------------------------------------------------------------------------
我想到的解决办法是: SaveDialog1CanClose不进行保存操作,只增加一个可以保存的判断标记,保存操作放在SaveDialog1->Execute() ; 之后。