Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: TWebBrowser in Firemonkey

  Alt 18. Feb 2014, 22:52
Unter Windows kannst Du auch eine VCL-DLL erstellen und diese von Deiner FMX-Applikation aufrufen.

Du verwendest also in der VCL-DLL die TWebrowser-Komponente (oder Indy oder alles sonst, was Dir in der VCL-Welt zur Verfügung steht) und rufst diese dann von der FMX-App auf.

In meinem FireMonkey-Blog habe ich gezeigt, wie der umgekehrte Weg geht (FMX-DLL in VCL-Anwendung aufrufen), der Weg geht aber eben auch anders rum. Das ist schon wichtig, denn so kannst Du unter Windows auch mit Deiner FMX-App alles das anbieten, was Du bisher mit der VCL machen konntest, incl. der weiteren FMX-Dinge.

Die Unit, welche Du in Deiner FMX-Anwendung einbindest, um die Prozedur aus der VCL-DLL aufzurufen sieht dann etwa so aus:

Delphi-Quellcode:
unit uVCLLink;

interface

uses
  Winapi.Windows;

type
   TShowHTML = procedure(fn: ShortString);

var
   ShowHTML : TShowHTML = nil;
   DllHandle : THandle;

implementation
 initialization
  if DllHandle = 0 then begin
     DllHandle := LoadLibrary('GETVCL.dll');
     if DllHandle > 0 then begin
      @ShowHTML := GetProcAddress(DllHandle,
        'ShowHTML');
     End else begin
       //MessageDlg('ShowHTML steht nicht zur Verfügung',
      // mtInformation, [mbOK], 0);
     end;
 end;
finalization
if DLLHandle <> 0 then
   FreeLibrary(DLLHandle);
end.
Ja, Du hast richtig gesehen, Du musst hier die WinApi in die FMX-Anwendung einbinden, um die DLL laden zu können. Damit es zu sonst keinen Komplikationen führt, verwendest Du eben nur diese eine Unit (um Namespace-Konflikte u.a. zu vermeiden).

P.S: Statt Shortstring kannst Du auch Widestring, und PCHAR verwenden, wenn Unicode-Zeichen verwendet werden sollen.

Habe mal schnell was in die Tastatur gehackt, das gewinnt keinen Schönheitspreis, zeigt aber als Gerüst, wie es geht. Projekt habe ich hier als Anhang beigefügt.
Angehängte Dateien
Dateityp: zip VCLDLL.zip (67,7 KB, 53x aufgerufen)

Geändert von Harry Stahl (19. Feb 2014 um 01:19 Uhr)
  Mit Zitat antworten Zitat