Einzelnen Beitrag anzeigen

Benutzerbild von rweinzierl
rweinzierl

Registriert seit: 22. Mär 2005
98 Beiträge
 
#16

AW: PDF/XPS/Papierformat-Viewer für Delphi

  Alt 29. Jun 2013, 18: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.
  Mit Zitat antworten Zitat