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.