許多 Windows 應用程式在「檔案」功能表底部列出最近使用的檔案(MRU List),提升使用者效率。本文示範使用 C++Builder TRegistry 元件將記錄寫入登錄表 HKEY_LOCAL_MACHINE\SOFTWARE\MYCOMPANY\Remember,並於啟動時動態重建功能表項目。
TRegistry *Registry; String Items[3]; int ItemsCount;Display() 重繪功能表。Display() 重建功能表: 清除舊動態項目,依陣列內容建立新 TMenuItem 插入功能表。FormShow 讀取登錄表: Registry->OpenKey(..., true); Items[i] = Registry->ReadString("Item"+IntToStr(i+1));FormClose 寫入登錄表: Registry->WriteString("Item"+IntToStr(i+1), Items[i]);// 開啟檔案按鈕
void __fastcall TForm1::Items1Click(TObject *Sender) {
if (OpenDialog1->Execute()) {
AnsiString file = OpenDialog1->FileName;
for (int i = ItemsCount-1; i > 0; i--) Items[i] = Items[i-1];
Items[0] = file;
if (ItemsCount < 3) ItemsCount++;
Display();
}
}
// 重建功能表
void __fastcall TForm1::Display() {
while (MainMenu1->Items->Items[0]->Count > 1) // 假設第一個頂層項目下的動態項從索引1開始
MainMenu1->Items->Items[0]->Delete(1);
for (int i = 0; i < ItemsCount; i++) {
TMenuItem *mi = new TMenuItem(MainMenu1);
mi->Caption = Items[i];
mi->OnClick = MRUItemClick; // 另需實作點擊開啟該檔案
MainMenu1->Items->Items[0]->Insert(1+i, mi);
}
}
同樣機制可用於:記住視窗尺寸/位置、自動填入帳號、保存使用者偏好設定等。TRegistry 封裝了 Win32 登錄 API,操作直觀且型別安全。