Empecé a convertir las interfaces de Webview para consumir en Delphi. Logré que se cargue la biblioteca de webkit, y parece que los métodos de interfaz que se llaman funcionan correctamente, sin embargo, parece que no puedo mostrar la vista web en el formulario principal.Vista web que no se muestra en MacOS con Delphi XE2
abajo es mi interfaces que se declaran
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;
Y Aquí sigue al código para construir una vista Web:
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;
El código se ejecuta sin levantar ninguna excepción, pero simplemente no quiere aparecer . ¿Qué debe hacerse de manera diferente en Delphi? Los ejemplos que encontré para el objetivo C parecen ser bastante simples:
Algunos ejemplos del objetivo C He visto mencionar IBOutlets. No parece que esto sea relevante para Delphi.
How to make WebView OSX Xcode project load a URL on launch?
Gracias.
Creo que no es posible ya que Delphi solo usa Cocoa para mostrar un formulario, todo lo demás se muestra usando Quartz. No deberías ser capaz de mostrar objetos de cacao sin escribir un vcl completo para Cocoa. –
"freepascal" podría no ser una etiqueta apropiada, ya que Free Pascal interactúa con Cocoa sobre Objective Pascal, no sobre interfaces y D2010 rtti (que FPC aún no admite). Si está interesado en el asunto, hay un inicio aproximado de un backend de LCL Cocoa. (afaik tiene soporte de FORMULARIO básico funcionando) –
@HenriGourvest Todo lo que quiero hacer es mostrar un formulario básico con el control de vista web en él - ¿Hay alguna manera de utilizar solo el cacao sin cuarzo? –