Hallo zusammen,
ich experimentiere gerade wie ich
das Einbinden von Fixes der FMX(VCL)-Libraries bequemer gestalten kann.
Normalerweise müsste man eine Kopie der Library erstellen,
darin die nötigen Änderungen machen, und
dann diese dann per "Add New" in das Projekt aufnehmen.
Damit würde die gefixte Library statt der orginalen Delphi-Library ins Projekt eingebunden.
Das wird aber bei einigen Files ein ziemlicher manueller Aufwand.
Ich kann diese
Liste der Library "Fixes" aber in eine Include-Datei schreiben:
Z.B. in einer
Datei "_FmxFixes\_FmxFixes_Startup.inc"
Delphi-Quellcode:
iOSapi.CoreLocation in '_FmxFixes\iOSapi.CoreLocation.pas',
System.iOS.Sensors in '_FmxFixes\System.iOS.Sensors.pas',
FMX.Media.Android in '_FmxFixes\FMX.Media.Android.pas',
Die "gefixten" Units liegen dann natürlich auch dabei.
In der
DPR Datei kann ich diese Liste einfach zu den normalen
Uses Definitionen includieren:
Delphi-Quellcode:
uses
System.StartUpCopy,
{$INCLUDE _FmxFixes\_FmxFixes_Startup.inc} //<-- Das bindet die "Fixes" aus dem Includem it ein
FMX.Forms,
uMain in 'uMain.pas' {Main_Frm};
Das funktioniert soweit super, und ist
IMHO recht simpel.
So habe ich nur
einen zentralen Einsprungpunkt für alle gewünschten Fixes, und
kann das
leicht für verschiedene Versionen und Platformen warten.
Ein Problem damit ist, dass
bei jeder Änderung der Forms, oder bei neuem Einbinden
von Forms, Frames, DataModules
dieser Uses-Listen Eintrag zerstört wird.
Die sieht danach so aus:
Delphi-Quellcode:
uses
System.StartUpCopy,
{$INCLUDE} //<-- Hier hat es mir die IDE den Dateinamen weggelöscht.
FMX.Forms,
uMain
in '
uMain.pas'
{Main_Frm},
Unit1
in '
Unit1.pas'
{Form1};
Da ich nur mit einer MainForm und einer Handvoll DatenModulen arbeite, und normalerweise weitere Units per Runtime hinzufüge, ist das erträglich.
Trotzdem ist ist es nervig
nach einer Änderung diese Zeile wieder manuell zu korrigieren,
gibt es dafür evtl. einen Workaround, oder eine bessere Lösung ?
Für ein paar erleuchtende Ideen und Vorschläge wäre ich euch dankbar.
Rollo