2

我想知道 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;
4

1 回答 1

5

您将不得不访问 DOM,并且作为礼物,您将收到对当前ICefDomDocument文档界面的引用。然后ICefDomDocument接口提供该SelectionAsText方法,该方法将当前选择作为文本(如果有)返回。在代码中,您可以编写如下内容:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Chromium1.Browser.GetFocusedFrame.VisitDomProc(
    procedure(const document: ICefDomDocument)
    begin
      ShowMessage(document.SelectionAsText);
    end
  );
end;
于 2013-11-13T01:42:16.890 回答