利用 TWebBrowser (封裝 MSHTML/IE 引擎) 載入本地 HTML 檔案,透過超連結 href 觸發 OnBeforeNavigate2 事件,解析 URL 片段執行對應 Delphi 程式邏輯,實現「網頁做介面、Delphi 做邏輯」的混合開發模式。
<a href="Action_Command"> 形式 (如 Play_、Stop_)。WebFrm.htm 放置專案目錄。TWebBrowser,Align := alClient,FormCreate 載入檔案。OnBeforeNavigate2 攔截導航,解析 URL 判斷命令,設定 Cancel := True 防止頁面跳轉錯誤。procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate(ExtractFilePath(Application.ExeName) + 'WebFrm.htm');
end;
procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject; const pDisp: IDispatch;
var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool);
begin
// URL 範例: file:///D:/Project/WebFrm.htm#Play_
if Pos('Play_', URL) > 0 then
begin
// 執行播放邏輯
ShowMessage('播放'); // 替換為實際播放代碼
Cancel := True;
end
else if Pos('Stop_', URL) > 0 then
begin
ShowMessage('停止');
Cancel := True;
end;
end;
WebBrowser1.OleObject.Document.GetElementById('id').InnerText := '...' 或 execScript 呼叫 JS 函數。網頁 → Delphi:window.external 需實作 IDispatch (較複雜),或維持 URL 片段導航模式。TEdgeBrowser (10.4+) 或 WebView2Loader 整合。