維護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() ; 之后。
uj5u.com熱心網友回復:
Execute opens the Save As dialog, returning true when the user selects a file name and clicks Save. If the user cancels the save operation, Execute returns a false value.if (SaveDialog1->Execute())
Memo1->Lines->SaveToFile(SaveDialog1->FileName);
if判斷一下不是更方便。
uj5u.com熱心網友回復:
