73 votes

WebView n’affichant ne pas sous MacOS à l’aide de Delphi XE2

J'ai commencé à convertir le Webview interfaces pour être consommé en Delphi. J'ai réussi à obtenir le webkit de la bibliothèque à charger, et les méthodes d'interface qui est appelée semble fonctionner correctement, cependant, je n'arrive pas à afficher la Webview sur le formulaire principal.

Ci-dessous est ma interfaces qui est déclarée

  WebFrameClass = interface(NSObjectClass)
  ['{7BE750C8-DFEC-4870-851A-12DBCB0B78F6}']
  end;

  WebFrame = interface(NSObject)
  ['{BCFA04BE-41AB-4B78-89C0-3330F12C7695}']
    procedure loadRequest(request: NSURLRequest); cdecl;
  end;
  TWebFrame = class(TOCGenericImport<WebFrameClass, WebFrame>)  end;

  WebViewClass = interface(NSViewClass)
  ['{0D9F44B7-09FD-4E35-B96E-8DB71B9A2537}']
    {class} function canShowMIMEType(MIMEType: NSString): Boolean; cdecl;
  end;

  WebView = interface(NSView)
  ['{C36D8016-2FCB-49F0-BA1C-C9913A37F9AC}']
    procedure clos; cdecl;
    procedure setHostWindow(hostWindow: NSWindow); cdecl;
    function initWithFrame(frame: NSRect; frameName: NSString; groupName: NSString): Pointer; cdecl;
    function mainFrame: WebFrame; cdecl;
  end;
  TWebView = class(TOCGenericImport<WebViewClass, WebView>)  end;

Et voici le code pour construire une WebView:

procedure TForm2.Button1Click(Sender: TObject);
var
  PWebView: Pointer;
  FwkMod: HMODULE;
  MyWebView: WebView;
  urlStr: NSURL;
  urlreq: NSURLRequest;
const
  WebKitFWK: string = '/System/Library/Frameworks/WebKit.framework/WebKit';
begin
  FwkMod := System.SysUtils.LoadLibrary(PWideChar(WebKitFWK));
  PWebView := TWebView.Alloc.initWithFrame(MakeNSRect(10, 10, 300, 300), nil, nil);
  MyWebView := TWebView.Wrap(PWebView);

  urlStr := TNSURL.Create;
  urlstr.initWithString(NSSTR('http://google.com.au/'));
  urlreq := TNSURLRequest.Create;
  urlreq.initWithURL(urlstr);
  MyWebView.mainFrame.loadRequest(urlreq);
end;

Le code s'exécute sans soulever des exceptions, mais juste ne souhaitez pas voir apparaître. Ce qui doit être fait différemment en Delphi? Les exemples que j'ai trouvé pour objectif C semble être assez simple:

Certains objective C exemples que j'ai vu mentionner IBOutlets. Il ne ressemble pas à ce qui est pertinent pour Delphi.

Comment faire de WebView OSX Xcode projet de charger une URL sur le lancement?

Merci.

7voto

moskito-x Points 6102

convertir une référence TForm pour un NSWindow définir la fenêtre hôte.

2voto

Ricardo Falasca Points 73

Avez-vous pensé à port chrome embarqué pour Delphi?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X