2

最初の質問。必要に応じてフォーマットを手伝ってください。

コンテキスト
メイン フォームに、プリンタのように動作する TWebBrowser があります。
そのため、ユーザーが実際のプリンターでいくつかのコマンドを実行すると、HTML テキストが読み込まれます...
ユーザーが WebBrowser からテキストをクリックして選択できるようにしたいと考えています。

問題
ユーザーが WebBrowser をクリックすると、アクションから登録されたショートカットの一部が機能しなくなります。たとえば、ショートカットを使用したアクションがありF7ます。ユーザーが WebBrowser をクリックして F7 キーを押しても、ショートカットは呼び出されません。
これは WebBrowser の設計によるものであることはわかっています。

そこで、すべてのキーの組み合わせをフォームに送り返したいと考えました。
問題は次のとおりです。
それが別のコントロールであればperform(WM_KeyDown,...)OnKeyDownイベントで a を使用できます。

代替案や提案もいただければ幸いです。この 2 日間、とても疲れていたので、何かが足りないかもしれません。

4

2 に答える 2

1

私がテストして作業したオプションは、HTML/javascript で key_code をトラップし、ドキュメントのタイトルを変更してそれをフォームに送信することです。誰かを助けることを願ってここに置いておきます...

次のように、HTML ページのヘッダーにキーをトラップするための JavaScript を追加する必要があります。

<script = ''javascript''>
  function keypresed() {
    var tecla=window.event.keyCode;

    document.title = "Command"+tecla;
    event.keyCode=0;
    event.returnValue=false;
  }
  document.onkeydown=keypresed;
</script>

次に、Webbrowser で onTitleChangeEvent を使用してキーを使用します。

var
 s:string;
begin
  if Copy(Text,0,7) = 'Command' then
  begin
    //get the key...
    s:= Copy(Text,8,Length(Text));

    // if before the webbrowser get the focus edit1 was the focused control, you will need remove that focus first...
    dummy.setfocus; 
    edit1.setfocus;

    //perform keydown
    keybd_event(StrToInt(s), 1,0,0)
  end;
end;

まあ、これは他のカスタムコマンドを実行するために使用できます。:)

于 2011-05-03T14:40:24.257 に答える