क्या डेल्फी क्रोमियम एम्बेडेड में दृश्य स्रोत विकल्प को अक्षम करना संभव है?
मुझे गुण/विधियों की सूची में कुछ भी उपयुक्त नहीं मिला है।क्रोमियम एम्बेडेड में दृश्य स्रोत विकल्प को अक्षम कैसे करें?
उत्तर
क्रोमियम पॉपअप मेनू आइटम छिपाने की अनुमति देने वाली कोई सीधी सेटिंग्स या ईवेंट नहीं हैं। हालांकि आप कम से कम कुछ विकल्प हैं जारी रखने के लिए कैसे, आप कर सकते हैं, उदाहरण के लिए:
1. टेल उपयोगकर्ता कि स्रोत देखें विकल्प मना किया और कार्रवाई
आप क्या कार्रवाई तय कर सकते हैं गिरावट है आप करेंगे OnMenuAction
इवेंट हैंडलर में अनुमति दें या अस्वीकार करें, जहां आप Result
पैरामीटर को सही असाइन करते हैं तो कार्रवाई अस्वीकार कर दी जाती है। निम्नलिखित कोड की जाँच करता है कि आप स्रोत देखें कार्रवाई प्रदर्शन किया है और यदि हां, तो कार्रवाई की जानकारी संदेश गिरावट और दिखाने:
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. आप कस्टम पेज (फ्रेम) पॉपअप मेनू
स्वामी हैं तो आप बना सकते हैं बनाएं अपना खुद का पॉपअप मेनू, लेकिन आपको यह विचार करने की आवश्यकता है कि यह मेनू काफी हार्डकोडेड है, इसलिए आपको इसे बनाए रखने की आवश्यकता होगी यदि आपको डेल्फी क्रोमियम रैपर के प्रत्येक नए संस्करण के साथ इसे समान रखना होगा। कर रहे हैं वहाँ, क्योंकि मैं कुछ संस्करण है कि ध्यान दिया है
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.
फ़ुटनोट
प्रकार परिभाषाएं सभी कोड नमूने में इस्तेमाल किया: यहाँ कोड स्रोत देखें मेनू आइटम के बिना पेज मेनू बनाने का तरीका है डेल्फी क्रोमियम में गलत घटना हैंडलर परिभाषाएं हैं।
शायद चीजों को पिछले कुछ वर्षों में बदल गया है, आज एक सीधा तरीका मौजूद है:
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
उपयोग कर सकते हैं आप पूरी तरह से पॉपअप मेनू से छुटकारा पाने के लिए करना चाहते हैं।
ठीक है। आपका बहुत बहुत धन्यवाद ! – henry60
मदद करने में खुशी हुई ;-) – TLama
इस महान सहायता के लिए धन्यवाद;) – Beny