Registriert seit: 22. Mär 2005
98 Beiträge
|
AW: PDF/XPS/Papierformat-Viewer für Delphi
29. Jun 2013, 19:22
Was ich bei Chromium hinbekommen habe sind Alerts im Javascript die ich in Delphi dann abfange. Geht, aber besonders schön finde ich das nicht ==> Geht das besser? wenn ja würde ich mich über eine Antwort mit einem kleinen Beispiel freuen.
Das geht ähnlich wie bei TWebBrowser (mit dem External Objekt):
http://stackoverflow.com/questions/6...g-chromium-and
Jetzt warst du zu schnell hatte gerade auch den Link gesucht um ihn hier zu posten. Aber das sollte die Frage ja ausführlich genug beantworten.
Hallo
Ich habe versucht den Beispielquellcode nachzuvollziehen, leider ohne Erfog. Ich bekomme es zwar durch den Compiler aber dann klappt es leider nicht (ohne Fehlermeldung).
Ich habe einfach meine Unit drangehängt, vielleicht sieht ja jemand auf die schnelle meinen Fehler.
mfg
Reinhold
Delphi-Quellcode:
unit utestCallBack;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, cefvcl,ceflib;
type
TForm19 = class(TForm)
crm: TChromium;
Panel1: TPanel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
procedure RegisterExtension;
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
TMyHandler = class(TCefv8HandlerOwn)
protected
function Execute( const name: ustring; const obj: ICefv8Value;
const arguments: TCefv8ValueArray; var retval: ICefv8Value;
var exception: ustring): Boolean; override;
end;
var
Form19: TForm19;
implementation
{$R *.dfm}
procedure TForm19.RegisterExtension;
var
Code: string;
begin
// Register a V8 extension with the below JavaScript code that calls native
// methods implemented in ClientV8ExtensionHandler.
Code :=
' var cef;'+
' if (!cef)'+
' cef = {};'+
' if (!cef.test)'+
' cef.test = {};'+
' (function() {'+
' cef.test.__defineGetter__('' test_param'' , function() {'+
' native function GetTestParam();'+
' return GetTestParam();'+
' });'+
' cef.test.__defineSetter__('' test_param'' , function(b) {'+
' native function SetTestParam();'+
' if(b) SetTestParam(b);'+
' });'+
' cef.test.test_object = function() {'+
' native function GetTestObject();'+
' return GetTestObject();'+
' };'+
' })();';
CefRegisterExtension(' example/v8', Code, TMyHandler.Create as ICefv8Handler);
end;
procedure TForm19.Button1Click(Sender: TObject);
begin
//Test ob Javascript Aufgruf geht
// if crm.Browser <> nil then
// crm.Browser.MainFrame.ExecuteJavaScript(
// 'alert("teste javascript");', 'about:blank', 0);
crm.Browser.MainFrame.ExecuteJavaScript(' cef.test.test_object().GetMessage();', ' about:blank', 0);
// if crm.Browser <> nil then
// crm.Browser.MainFrame.LoadUrl('www.google.de');
end;
procedure TForm19.FormCreate(Sender: TObject);
begin
RegisterExtension;
end;
{ TMyHandler }
function TMyHandler.Execute( const name: ustring; const obj: ICefv8Value;
const arguments: TCefv8ValueArray; var retval: ICefv8Value;
var exception: ustring): Boolean;
begin
ShowMessage(' Execute!');
end;
end.
|
|
Zitat
|