Delphi Chromium Embeddedでビューソースオプションを無効にすることはできますか?
プロパティ/メソッドリストに適切なものが見つかりませんでした。Chromium Embeddedで表示ソースオプションを無効にするにはどうすればよいですか?
6
A
答えて
12
Chromiumのポップアップメニュー項目を非表示にする直接設定やイベントはありません。続行するか、少なくともいくつかのオプションがありますただし、次のことができ、たとえば:
ソースを表示オプションが禁止されますが、どのようなアクションを決めることができ、アクション
を辞退さ 1.テルユーザーはあなたの意志許可または拒否するにはOnMenuAction
イベントハンドラを使用します。ここでは、Result
パラメータにTrueを割り当てた場合、アクションは拒否されます。あなたがソース表示アクションを行い、その場合、情報メッセージアクションを拒否し、表示されている次のコードをチェック:カスタムでメニュー項目のキャプションを変更することにより、 type
TCefMenuId = TCefHandlerMenuId;
procedure TForm1.Chromium1MenuAction(Sender: TObject;
const browser: ICefBrowser; menuId: TCefMenuId; out Result: Boolean);
begin
if menuId = MENU_ID_VIEWSOURCE then
begin
Result := True;
ShowMessage('View page source is not allowed!');
end;
end;
2.偽の何かにメニュー項目をそのアクション
メニュー項目のキャプションを変更し、カスタムアクションを実行することで、メニュー項目を利用することができます。次のサンプルコードについてボックスメニュー項目に表示ソース]メニュー項目を変更する方法を示しています。あなたはあなたが作成できるカスタムページ(フレーム)ポップアップメニュー
を所有して作成
type
TCefMenuId = TCefHandlerMenuId;
procedure TForm1.Chromium1GetMenuLabel(Sender: TObject;
const browser: ICefBrowser; menuId: TCefMenuId; var caption: ustring;
out Result: Boolean);
begin
if menuId = MENU_ID_VIEWSOURCE then
caption := 'About my application...';
end;
procedure TForm1.Chromium1MenuAction(Sender: TObject;
const browser: ICefBrowser; menuId: TCefMenuId; out Result: Boolean);
begin
if menuId = MENU_ID_VIEWSOURCE then
begin
Result := True;
ShowMessage('About box...!');
end;
end;
3独自のポップアップメニューがありますが、このメニューはかなりハードコードされていると考える必要があります。新しいバージョンのDelphi Chromiumラッパーと同じにする必要がある場合は、このメニューを維持する必要があります。ここではソースを表示]メニュー項目なしページのメニューを作成する方法のコードは次のとおりです。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, cefvcl, ceflib;
type
PCefMenuInfo = PCefHandlerMenuInfo;
type
TForm1 = class(TForm)
Chromium1: TChromium;
procedure FormCreate(Sender: TObject);
procedure Chromium1BeforeMenu(Sender: TObject; const browser: ICefBrowser;
const menuInfo: PCefMenuInfo; out Result: Boolean);
private
PageMenu: TPopupMenu;
procedure OnNavigateBackMenuItemClick(Sender: TObject);
procedure OnNavigateForwardMenuItemClick(Sender: TObject);
procedure OnPrintMenuItemClick(Sender: TObject);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.OnNavigateBackMenuItemClick(Sender: TObject);
begin
Chromium1.Browser.GoBack;
end;
procedure TForm1.OnNavigateForwardMenuItemClick(Sender: TObject);
begin
Chromium1.Browser.GoForward;
end;
procedure TForm1.OnPrintMenuItemClick(Sender: TObject);
begin
Chromium1.Browser.GetFocusedFrame.Print;
end;
procedure TForm1.Chromium1BeforeMenu(Sender: TObject;
const browser: ICefBrowser; const menuInfo: PCefMenuInfo;
out Result: Boolean);
begin
if menuInfo.typeFlags = MENUTYPE_PAGE then
begin
Result := True;
PageMenu.Items[0].Enabled := browser.CanGoBack;
PageMenu.Items[1].Enabled := browser.CanGoForward;
PageMenu.Popup(menuInfo^.x, menuInfo^.y);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
MenuItem: TMenuItem;
begin
PageMenu := TPopupMenu.Create(Self);
MenuItem := TMenuItem.Create(PageMenu);
MenuItem.Caption := 'Back';
MenuItem.OnClick := OnNavigateBackMenuItemClick;
PageMenu.Items.Add(MenuItem);
MenuItem := TMenuItem.Create(PageMenu);
MenuItem.Caption := 'Forward';
MenuItem.OnClick := OnNavigateForwardMenuItemClick;
PageMenu.Items.Add(MenuItem);
MenuItem := TMenuItem.Create(PageMenu);
MenuItem.Caption := '-';
PageMenu.Items.Add(MenuItem);
MenuItem := TMenuItem.Create(PageMenu);
MenuItem.Caption := 'Print';
MenuItem.OnClick := OnPrintMenuItemClick;
PageMenu.Items.Add(MenuItem);
Chromium1.Load('www.stackoverflow.com');
end;
end.
脚注は
私はいくつかのバージョン気づいたため、すべてのコードサンプルで使用されるタイプの定義がありますDelphi Chromiumのイベントハンドラの定義が間違っています。
1
は、おそらく、物事は直接法が存在している今日、長年にわたって変更:
uses
ceflib;
[..]
implementation
procedure TForm1.Chromium1BeforeContextMenu(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame;
const params: ICefContextMenuParams; const model: ICefMenuModel);
begin
//model.Clear;
model.Remove(Integer(MENU_ID_VIEW_SOURCE));
end;
あなたは完全にポップアップメニューを取り除きたい場合は、model.Clear
を使用することができます。
関連する問題
- 1. Google ChromeまたはChromiumで「黄色いプロンプト」を表示するにはどうすればよいですか?
- 2. WordPressでカテゴリを非表示または無効にするにはどうすればよいですか?
- 3. Nexus Galaxyのタップでキャンバスのハイライト表示を無効にするにはどうすればよいですか?
- 4. html表示を無効にするにはどうすればよいですか?
- 5. ログイン表示を無効にするにはどうすればよいですか?
- 6. drupalでオーサリング情報の表示を無効にするにはどうすればいいですか?
- 7. スクロールビューを無効にするにはどうすればよいですか?
- 8. scrollViewを無効にするにはどうすればよいですか?
- 9. Ctrl + F4を無効にするにはどうすればよいですか?
- 10. ピボットフリックイベントを無効にするにはどうすればよいですか?
- 11. Android:デスクトップを無効にするにはどうすればよいですか?
- 12. jqgridローカルキャッシュを無効にするにはどうすればよいですか?
- 13. ポリラインクリックオーバーレイを無効にするにはどうすればよいですか?
- 14. tomcatを無効にするにはどうすればよいですか?
- 15. "dijit.form.FilteringSelect"ウィジェットを無効にするにはどうすればよいですか?
- 16. GestureListenerを無効にするにはどうすればよいですか?
- 17. TextBlockを無効にするにはどうすればよいですか?
- 18. マルチタッチを無効にするにはどうすればよいですか?
- 19. UISegmentedControlを無効にするにはどうすればよいですか?
- 20. LinkLabel TabStopを無効にするにはどうすればよいですか?
- 21. ランキットを無効にするにはどうすればよいですか?
- 22. WM6.5.3ジェスチャーを無効にするにはどうすればよいですか?
- 23. ASP:Panelを無効にするにはどうすればよいですか?
- 24. Djangoクエリキャッシュを無効にするにはどうすればよいですか?
- 25. ビュークローズオプションを無効にするにはどうすればよいですか?
- 26. invalidate()を無効にするにはどうすればよいですか?
- 27. チェックボックスの有効化でPayPalボタンを無効/有効にするにはどうすればよいですか?
- 28. 無効にされたToolStripMenuItemがマウスで枠線を表示しないようにするにはどうすればよいですか?
- 29. 無効なコントロールのヒントを表示するにはどうすればいいですか?
- 30. iOSでスリープモードをプログラムで有効/無効にするにはどうすればよいですか?
OK。どうもありがとうございました ! – henry60
喜んで;-) – TLama
この大きな助けをありがとう;) – Beny