在某些情境下 (如「加入檔案」功能),希望將 TOpenDialog 的「開啟」按鈕文字改為自訂文字 (如「加入檔案」)。
TOpenDialog 封裝的是 Windows 共用對話框 (真正的 DialogBox),非 VCL 表單。可在 OnShow 事件中,透過 API 取得對話框視窗句柄與按鈕控制項句柄,再用 SetWindowText 修改文字。
void __fastcall TForm1::OpenDialog1Show(TObject *Sender)
{
HWND hDlg = GetParent(OpenDialog1->Handle); // 取得對話框視窗句柄
HWND hBtn = GetDlgItem(hDlg, 1); // 開啟按鈕的控制項 ID 為 1
SetWindowText(hBtn, "&加入檔案"); // 修改標題,& 設定熱鍵
}
OpenDialog1->Handle 是共用對話框內部子視窗句柄,需用 GetParent 取得最上層對話框句柄。1 (取自 dlgs.h 的 IDOK)。TSaveDialog、TFileOpenDialog (Vista+) 等共用對話框,只需確認按鈕 ID。簡單幾行碼即可客製化標準對話框按鈕文字,無需自寫對話框。