我想了解 TChromiumFMX 浏览器组件是否包含用户选择的文本,如果是,请检索该文本,而无需用户先将其复制到剪贴板 (ctrl-c)。
为了改进 TLama 的答案:如果您不使用 ShowMessage,则匿名过程并不总是在退出 Button1Click 之前完成,因此通常不会产生任何结果(或为时已晚)。因此,可以检查过程的最后一行 Done := true 以查看是否已检索到该值:
procedure TForm1.Button1Click(Sender: TObject);
var Done: boolean;
begin
Done := false;
Chromium1.Browser.GetFocusedFrame.VisitDomProc(
procedure(const document: ICefDomDocument)
begin
SelectedText := document.SelectionAsText;
Done := true
end
);
while not Done do Application.ProcessMessages
end;
您必须访问 DOM,作为礼物,您将收到对当前ICefDomDocument
文档界面的引用。然后,ICefDomDocument
接口提供 SelectionAsText
方法,该方法将当前所选内容作为文本(如果有)返回。在代码中,您可以编写如下内容:
procedure TForm1.Button1Click(Sender: TObject);
begin
Chromium1.Browser.GetFocusedFrame.VisitDomProc(
procedure(const document: ICefDomDocument)
begin
ShowMessage(document.SelectionAsText);
end
);
end;