![]() |
VCL Types in FMX Anwendung
Hallo zusammen, folgendes Anliegen:
ich habe eine neue FMX Anwendung geschrieben. In dieser Anwendung möchte ich über eine bestehende Unit verschiedene VCL Types einbinden und verwenden, zum Beispiel TPoint. Nun lautet meine Frage, wie ich das am besten anstelle, da mein Compiler die besagten Types nicht findet, trotz eingebundener Unit. Gibt es dafür eine simple Lösung, zum Beispiel muss ich spezielle Einstellungen in den Projektoptionen vornehmen? Danke für eure Antworten! |
AW: VCL Types in FMX Anwendung
TPoint ist in Systen.Types deklariert.
Im Allgemeinen ist es keine gute Idee, VCL-Typen in FMX zu verwenden, da hier teilweise Typen anders implementiert sind. |
AW: VCL Types in FMX Anwendung
Danke für die Antwort, aber ich habe mich wohl falsch ausgedrückt.
Was ich meinte war dass bis jetzt alles fehlerfrei mit VCL compiliert werden konnte. Nun möchte ich mit FMX arbeiten und jetzt wird mir angezeigt, dass zum Beispiel TPoint nicht gefunden werden kann bzw. nicht deklariert wurde. Ich habe leider noch nicht verstanden, woran das liegt und wie ich es umgehen kann. Viele Grüße! |
AW: VCL Types in FMX Anwendung
Es gibt für einige Typen Umleitungen/Aliase.
Also diese Typen sind mehrfach in verschiedenen Units weitergeleitet. (z.B. weil sie früher mal in VCL-Units lagen und dann da in Globale verschoben wurden, damit es nicht gleich überall knallt) In deinem Fall mußt du einfach nur die Unit einbinden, wo der Typ "wirklich" implementiert ist (vermutlich Systen.Types), da es hier scheinbar im FMX keine Umleitung gibt. |
AW: VCL Types in FMX Anwendung
Viele Typen wurden von der VCL bzw. FMX in die RTL verschoben (wie bei TPoint)
|
AW: VCL Types in FMX Anwendung
Genau. TPoint bindest Du über System.Types ein.
Ansonsten findest Du viel benötigtes in
Delphi-Quellcode:
FMX.Types
Hilfreich sind auch
Delphi-Quellcode:
Wenn Du z.B. System.UiConsts einbindest, kannst Du Dir bei einigen Dingen Schreibarbeit sparen, also z.B. statt
System.UITypes,
System.UIConsts.
Delphi-Quellcode:
VCL.Types würde ich ganz raus lassen.
color := TAlphaColorRec.Red;
//kannst Du schreiben: color := claRed; Falls Du eine Unit sowohl unter VCL als auch FMX verwenden solltest, musst Du die jeweiligen VCL / FMX Units eben über {$IFDEF ...} einbinden. |
AW: VCL Types in FMX Anwendung
Zitat:
Wenn Antwort über ein eigenes DEFINE stattfindet hat es sich erledigt. |
AW: VCL Types in FMX Anwendung
Zitat:
Delphi-Quellcode:
lösen.
{$IFDEF FMXApp}
... FMX-Units {$ELSE} ... VCL-Units {$ENDIF} |
AW: VCL Types in FMX Anwendung
Dacht ich mir beinahe aber Fragen kostet ja nichts, Danke:wink:
Ich böser Mensch, da ich faul mit der IDE bin hät ich mir eine {$DEFINE FmxApp} irgendwo über den Uses Code geschrieben. |
AW: VCL Types in FMX Anwendung
Zitat:
In den Projektoptionen festgelegt brauchst du nur kompilieren, fertig (egal in wievielen Units du das auch verwendest). |
AW: VCL Types in FMX Anwendung
Reicht es da nicht aus wenn man es einmal in der .dpr ankündigt damit es global fürs ganze Projekt Gültigkeit hat? @Schokohase
|
AW: VCL Types in FMX Anwendung
Zitat:
|
AW: VCL Types in FMX Anwendung
Per .dpr defined, per Create getestet
Delphi-Quellcode:
und jupp, kommt ein False raus. Wieder was dazu gelernt.:thumb:
procedure TForm18.FormCreate(Sender: TObject);
begin {$IFDEF Schokohase} mmo1.Lines.Add('Schokohase: True'); {$ELSE Schokohase} mmo1.Lines.Add('Schokohase: False'); {$ENDIF Schokohase} end; |
AW: VCL Types in FMX Anwendung
ich habe eine Unit entwickelt, da diese unit keine GUI elemente verwendet, also doch auch für beide Frameworks verfügbar sein sollte,
wie kann ich dann den Compiler anweisen, "bitte immer aus system.types die Typen importieren und nicht aus vcl.types" ? Die Unit wird einmal eingebunden un eine APP die FMX Framework verwendet und einmal in eine andere mit dem VCL Framework. Gibt es hier eine Best-Practise Dokumentation ???? Später möchte ich dann auch noch nach FMX.Linux ........................ |
AW: VCL Types in FMX Anwendung
Man kann auch mit den Prefixen in den Projekteinstellungen arbeiten und dann nur
Delphi-Quellcode:
verwenden wird dann zu
Uses ..., <UnitName>, ...;
VCL.<UnitName> oder FMX.<UnitName> expandiert. |
AW: VCL Types in FMX Anwendung
Mal abgesehen davon, dass es die unit "VCL.Types" nicht gibt, im Prinzip wurde die Frage schon beantwortet, aber hier noch mal als konkretes Beispiel:
1. In den Projekteinstellung der FMX-Anwendung "FMXApp" als Bedingung deklarieren. 2. In der Unit, die sowohl in VCL-Anwendung und FMX-Anwendung genutzt wird, wie folgt:
Delphi-Quellcode:
unit BeideWelten;
Interface uses System.Types, // Plattformneutral, Typen hieraus gelten für alle Plattformen System.StrUtils, ... {$IFDEF FMXApp} FMX.Types, FMX.Graphics {$ELSE} VCL.Clipboard, VCL.Graphics {$ENDIF} ; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz