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 に答える