父視窗(FormStyle = fsMDIForm)包含多個子視窗(FormStyle = fsMDIChild)。子視窗在專案選項中設為「可用」而非「自動建立」,執行期動態 Create。菜單融合機制:子視窗菜單依 GroupIndex 插入/取代父視窗菜單。WindowMenu 屬性自動管理視窗清單切換。
單一視窗內以分頁切換,速度更快、資源更省。分兩類:
| 類型 | 特徵 | 實作方式 |
|---|---|---|
| 靜態 MPI | 分頁數固定,設計時期建立 | TNotebook + TTabSet,TabSet.Tabs := Notebook.Pages,OnClick 同步 PageIndex |
| 動態 MPI | 分頁隨文件開啟/關閉增減 | 需自訂類別(TDynaPage),管理 CurPage、FileList,動態建立/銷毀 TMemo 於 TPage 上 |
TNotebook.Pages.Objects[] 回傳 TObject,實為 TPage(TCustomEdit 衍生),需用無型別指標 Pointer 中轉指派 ParentTabSet.TabIndex、Notebook.PageIndex、CurPage、Memo1 指標代碼範例展示 Open1Click/Close1Click 如何協調 DynaPage、Notebook、TabSet 三者狀態一致性。