Ich habe die Formulare per DI mit Emballo eingebunden. So sieht die
dpr aus:
Delphi-Quellcode:
program VCL_BaseApp;
uses
Vcl.Forms,
Emballo.DI.Registry,
Emballo.DI.Core,
VCLMainForm
in '
VCLMainForm.pas'
{MainForm},
VCLForm2
in '
VCLForm2.pas'
{Form2},
MainUnit
in '
C:\DXE2\Samples\Delphi\VCL\FlowPanel\MainUnit.pas'
{VCLFlowPanel},
Service
in '
Service.pas',
FMXMainForm
in '
S:\FMX_BaseApp\FMXMainForm.pas'
{FMXForm1},
FMXFireFlow
in '
FMX\FMXFireFlow.pas'
{FMXFireFlow};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TMainForm, MainForm);
RegisterFactory(IForm2, TForm2).Done;
RegisterFactory(IFMXForm1, TFMXForm1).Done;
RegisterFactory(IVCLFlowPanel, TVCLFlowPanel).Done;
RegisterFactory(IFMXFireFlow, TFMXFireFlow).Done;
Application.Run;
end.
Und so das Hauptformular, das die Formulare per Interface einbindet.
Delphi-Quellcode:
unit VCLMainForm;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.StdCtrls,
Service;
type
TMainForm =
class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
procedure TMainForm.Button1Click(Sender: TObject);
begin
DI_Form2.ShowMe;
end;
procedure TMainForm.Button2Click(Sender: TObject);
begin
DI_FMXForm1.ShowMe;
end;
procedure TMainForm.Button3Click(Sender: TObject);
begin
DI_VCLFlowPanel.ShowMe;
end;
procedure TMainForm.Button4Click(Sender: TObject);
begin
DI_FMXFireFlow.ShowMe;
end;
end.
Edit: Ist die Anwendung
VCL-basierend, kann man FastReport.VCL zusammen mit FMX-Forms benutzen. Ist die App aber FMX-basierend, kompiliert FastReport nicht, da die
Unit-Referenzen nicht passen.