Как игнорировать символы ускорителя в TWebBrowser (режим разработки) - PullRequest
1 голос
/ 08 июля 2020

У меня, по сути, та же проблема, что и описанная в этом вопросе:

Как заставить TWebBrowser игнорировать символы ускорителя других элементов управления?

Итак, TWebBrowser находится в режиме разработки, а клавиши-ускорители из TAction выполняют связанное действие.

Решение было:

type
  TWebBrowser = class(SHDocVw.TWebBrowser)
    procedure CNChar(var Message: TWMChar); message CN_CHAR;
  end;

...

procedure TWebBrowser.CNChar(var Message: TWMChar);
begin
  Message.Result := 0;
end;

Я бы хотел попробовать решение, описанное в вопросе выше, но У меня проблемы с переводом этого в код C ++ Builder. Как мне перевести - и - есть ли другие решения без нисходящей TWebBrowser и отмены процедуры CNChar (возможно, делая это в событии на основе TForm)?

1 Ответ

0 голосов
/ 11 июля 2020

Перевод в C ++ Builder (предоставлено Реми Лебо).

class TWebBrowser : public Shdocvw::TWebBrowser
{
private:
    MESSAGE void __fastcall CNChar(TWMChar &Message);

public:
    inline __fastcall virtual TWebBrowser(TComponent* AOwner) : Shdocvw::TWebBrowser(AOwner) { }

BEGIN_MESSAGE_MAP
    VCL_MESSAGE_HANDLER(CN_CHAR, TWMChar, CNChar);
END_MESSAGE_MAP(Shdocvw::TWebBrowser)
};

...

void __fastcall TWebBrowser::CNChar(TWMChar &Message)
{
    Message.Result = 0;
}
...