Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   VCL unit in FMX DataModule (https://www.delphipraxis.net/187292-vcl-unit-fmx-datamodule.html)

quaero 17. Nov 2015 09:28

VCL unit in FMX DataModule
 
Hallo,

ich habe eine Firemonkey-Anwendung (Delphi Seattle) mit einem TDataModule. In diesem Modul befinden sich eine FDConnection und zwei FDQueries. Ich habe mein gesamtes Projekt in einen anderen Ordner kopiert. Nachdem ich das Projekt neu mit Delphi Seattle geöffnet und die Unit mit dem Datenmodul geöffnet habe, hat mir Delphi die Unit FireDAC.VCLUI.Wait in den Interface-Teil eingebunden. FireDAC.FMXUI.Wait war bereits vorhanden. Beim Versuch, das Projekt zu bauen, kommt der Fehler, dass FireDAC.VCLUI.Wait nicht gefunden wird. Wenn ich die Datei in der IDE schließe und diese Unit per Texteditor rausschmeiße, dann kann ich wieder alles bauen. Aber sobald die Datei geöffnet ist, packt Delphi die Unit wieder rein.
Ich habe die Datei schon aus dem Projekt entfernt und wieder hinzugefügt, aber Delphi packt mir die Unit gleich wieder rein.
Hat einer von euch eine Idee, wie ich diese Unit dauerhaft rausbekomme, bzw. warum diese Unit immer wieder reinkommt?

Der schöne Günther 17. Nov 2015 09:38

AW: VCL unit in FMX DataModule
 
Auf was steht denn ClassGroup deines Datenmoduls? Wahrscheinlich noch auf VCL, oder?

mkinzler 17. Nov 2015 09:38

AW: VCL unit in FMX DataModule
 
Er scheint zu meinen, dass es sich um eien VCL Projekt handelt

Sir Rufo 17. Nov 2015 09:41

AW: VCL unit in FMX DataModule
 
So sieht ein DataModule aus, wenn es frisch mit FMX erzeugt wurde
Delphi-Quellcode:
unit Unit2;

interface

uses
  System.SysUtils, System.Classes;

type
  TDataModule2 = class(TDataModule)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  DataModule2: TDataModule2;

implementation

{%CLASSGROUP 'FMX.Controls.TControl'} // <- Das ist entscheidend

{$R *.dfm}

end.
Und genau dieses
Delphi-Quellcode:
{%CLASSGROUP 'FMX.Controls.TControl'}
entscheidet nun darüber, was hier benötigt wird, bzw. woran FireDAC erkennt, welches Framework verwendet wird.
  • VCL
    Delphi-Quellcode:
    {%CLASSGROUP 'Vcl.Controls.TControl'}
  • FMX
    Delphi-Quellcode:
    {%CLASSGROUP 'FMX.Controls.TControl'}
  • Persistent
    Delphi-Quellcode:
    {%CLASSGROUP 'System.Classes.TPersistent'}
WICHTIG!
Delphi-Quellcode:
implementation

{%CLASSGROUP 'FMX.Controls.TControl'} // muss direkt unter implementation stehen
Falsch ist z.B.
Delphi-Quellcode:
implementation

uses
  UnitFoo;

{%CLASSGROUP 'FMX.Controls.TControl'} // muss direkt unter implementation stehen
Falsch ist auch
Delphi-Quellcode:
implementation

{ %CLASSGROUP 'FMX.Controls.TControl'} // nicht daran herumfummeln!
Und der
Delphi-Quellcode:
TFDGUIxWaitCursor
entscheidet zusätzlich über den Eintrag
Delphi-Quellcode:
TFDGUIxWaitCursor.Provider
welches Unit eingebunden wird.

quaero 17. Nov 2015 09:47

AW: VCL unit in FMX DataModule
 
Ihr seid super!

Delphi-Quellcode:
{%CLASSGROUP 'FMX.Controls.TControl'}
stand zwar drin, aber Rufos Hinweis traf genau ins Schwarze:

Zwischen IMPLEMENTATION und CLASSGROUP stand noch was. Das habe ich jetzt nach unten verschoben und schon funktioniert es.
Vielen Dank.

Uwe Raabe 17. Nov 2015 09:56

AW: VCL unit in FMX DataModule
 
Die ClassGroup lässt sich auch bequem im Objektinspektor einstellen, wenn das DataModule selektiert ist. Wird dort trotz existierender ClassGroup-Zeile nichts angezeigt, steht die Zeile an der falschen Stelle.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz