Vielleicht gibt es ja einen Knopf, wo man das ausschalten kann.
Einen solchen Knopf gibt es nicht. Aber es gibt mind. zwei Möglichkeiten um das Problem zu umgehen:
1. Auf den Rechnern, welche noch mit Delphi XE arbeiten, einfach Dummy-Units System.Actions.pas und System.ImageList.pas erstellen und im Library-Pfad ablegen (aber nicht in die Versionsverwaltung übernehmen):
Code:
unit System.Actions;
// nur für Delphi XE2 und älter erforderlich.
interface
implementation
end.
Delphi XE compiliert diese Units einfach mit; der Fehler tritt nicht mehr auf.
2. Die
IDE per IFDEFs überlisten. Nachstehenden Code in alle betroffenen Forms einfügen:
Code:
unit <DeinFormName>;
{$DEFINE USE_SYSTEM_ACTIONS}
{$IF CompilerVersion < 24} {$UNDEF USE_SYSTEM_ACTIONS} {$ENDIF}
uses
SysUtils,
{$IFDEF USE_SYSTEM_ACTIONS}
System.Actions,
System.ImageLst,
{$ENDIF}
...
Diese "umgekehrte" Logik ist erforderlich, weil die
IDE bzw. Code Completion die CompilerVersion nicht auswertet. Die naheliegende Idee auf {$IF CompilerVersion >= 24} zu prüfen funktioniert darum nicht (erst recht nicht in einer $include-Datei).
Die
IDE (ab XE3) erkennt, dass System.Actions und System.ImageList schon in der Uses-Liste vorhanden ist, und fügt diese nicht mehr hinzu. Die ältere
IDE hat sowieso kein Verlangen, diese Units hinzuzufügen; und der Compiler wird durch das IFDEF davon abgehalten, diese Units zu compilieren.
HTH
Achim