¿Es posible deshabilitar la opción de vista de origen en Delphi Chromium Embedded?
No he encontrado nada adecuado en la lista de propiedades/métodos.¿Cómo deshabilitar la opción de vista de origen en Chromium Embedded?
Respuesta
No hay configuraciones directas o eventos que permitan ocultar elementos del menú emergente Chromium. Sin embargo, usted tiene por lo menos algunas opciones de cómo continuar, puede por ejemplo:
usuario 1. dicen que la opción Ver código fuente está prohibido y rechazar la acción
Puede decidir qué acción se permitir o rechazar en el controlador de eventos OnMenuAction
, donde si asigna True al parámetro Result
la acción se rechaza. El siguiente código comprueba que ha realizado la acción ver código fuente y si es así, rechazar la acción y mostrar el mensaje de información:
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. Falso el elemento de menú con un valor personalizados cambiando el título del elemento de menú con su Acción
Puede aprovechar el elemento del menú para otra cosa cambiando el título del elemento de menú y ejecutando alguna acción personalizada. El siguiente código de ejemplo muestra cómo cambiar la opción de menú Ver código fuente en el ítem cuadro de menú:
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. Cree su propio menú personalizado página (marco) emergente
Puede crear su propio menú emergente, pero debe tener en cuenta que este menú está bastante codificado, por lo que tendrá que mantenerlo si necesita tenerlo igual con cada nueva versión del envoltorio Delphi Chromium. Aquí está el código de cómo crear el menú de la página sin opción de menú ver fuente:
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.
nota
Las definiciones de los tipos utilizados en todos los ejemplos de código están allí porque me he dado cuenta de que alguna versión de Delphi Chromium tiene definiciones de controlador de eventos incorrectos.
Probablemente las cosas cambiaron con los años, hoy en día existe un método directo:
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;
Usted puede utilizar model.Clear
si quiere deshacerse por completo del menú emergente.
- 1. Problemas con Delphi Chromium Embedded
- 2. Usando TChromium, Delphi Chromium Embedded
- 3. ¿Cómo obtener elementos por nombre en Delphi Chromium Embedded?
- 4. ¿Dónde están los documentos para Chromium Embedded Framework?
- 5. Cómo deshabilitar Vista de compatibilidad en IE
- 6. Acelerando la construcción de Chromium
- 7. Deshabilitar la misma política de origen en Android Chrome
- 8. Cómo deshabilitar la vista de encabezado en ListView
- 9. Cómo deshabilitar la opción de 45 grados en Google Maps API de Javascript 3.x
- 10. Deshabilitar la opción de selección en IOS Safari
- 11. Cómo deshabilitar la vista de satélite de Google Map?
- 12. Deshabilitar la política del mismo origen en Safari
- 13. Jquery Deshabilitar opción en menú desplegable
- 14. Cómo deshabilitar la interacción del usuario en una vista personalizada
- 15. ¿Puedo deshabilitar la "vista de depuración" en Visual Studio 2010?
- 16. ¿Es posible deshabilitar la opción multilínea de textarea?
- 17. Use Selenium con Chromium Browser
- 18. Cómo deshabilitar elementos en una Vista de lista?
- 19. ¿Cómo empezar a editar la fuente de Chromium?
- 20. ¿La opción addSubview de UIView realmente conserva la vista?
- 21. ¿Cómo puedo añadir "carga más" opción de vista de tabla
- 22. Cómo deshabilitar cualquier evento en una vista en Android?
- 23. ¿Deshabilitar la misma política de origen/hacer XMLHttpRequests de dominio cruzado en WebKit WebView?
- 24. jsTree - desactivar la opción de arrastrar
- 25. Cómo deshabilitar el color de texto blanco en la selección en NSTableView basado en vista?
- 26. iPhone SDK - ¿Cómo deshabilitar la vista previa de la imagen en UIImagePickerController?
- 27. Cómo deshabilitar la representación de la vista en ActionController TestCase (Rails 3.0.9)
- 28. Delphi Chromium incrustado en el formulario DLL
- 29. Acceda a la lista de "sitios incorrectos" del Chromium incrustado?
- 30. Registro de eventos en Embedded Systems
OK. Muchas gracias ! – henry60
Me alegra ayudar ;-) – TLama
Gracias por esta gran ayuda;) – Beny