Home » Tipps & Tricks » System » Desktop und Taskleiste » Aktuellen System-Style verwenden

Aktuellen System-Style verwenden

Standardmäßig wird ein Delphi-Programm auch unter Windows XP oder Windows Vista noch im alten Windows 2000-Style angezeigt.Dieser Tipp zeigt, wie der Style des Systems (XP, Vista oder Windows 7) in der eigenen Anwendung benutzt werden kann.Unabhängig davon welches Windows-System installiert ist, wird immer der aktuell ausgewählte Style des Systems von dem Endbenutzer der Anwendung verwendet. Wird unter XP also der Windows 2000 Style benutzt, wird die Anwendung auch im Windows 2000 Style dargestellt.

Gleiches gilt auch für Themes für Windows Shell von Drittanbietern: Wird unter Windows XP beispielsweise der Style VistaVG ausgewählt, wird die eigene Anwendung dann auch genau in diesem Style angezeigt.

Win32

Um in einer Win32-Anwendung den System-Style zu aktivieren, muss ein bestimmtes Manifest vorhanden sein. Ein Manifest ist eine XML-Datei mit Metadaten für eine Exe oder DLL, die Windows ab XP für verschiedenste Zwecke auswerten kann. Dazu gibt es zwei Möglichkeiten: Entweder muss dieses Manifest als externe Datei mitgegeben oder als Ressource eingebunden werden.
In beiden Fällen muss zuerst eine leere Datei namens Style.manifest angelegt werden.
In diese Datei muss dann folgender XML-Code eingefügt werden:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
  <assemblyIdentity name="Borland.Delphi.XPApplication"
    processorArchitecture="x86" version="7.0.2.99" type="win32"/>
  <description>Windows Shell</description>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0" processorArchitecture="x86"
        publicKeyToken="6595b64144ccf1df" language="*" />
    </dependentAssembly>
  </dependency>
</assembly>

Wenn das Manifest bloß als Datei mitgegeben werden soll, muss diese eben angelegte Datei den Namen der Exe-Datei + .manifest tragen.Wenn die Anwendung also Project1.exe heißt, muss das Manifest, welches oben angelegt wurde, zu Project1.exe.manifest umbenannt werden. Mit diesem Manifest wird das Programm Project1.exe nun im aktuell ausgewähltem System-Style angezeigt, aber nur solange sich die Manifest-Datei im selben Ordner befindet.Die andere Möglichkeit ist, das Manifest als Ressource einzubinden.
Dazu muss eine leere Datei namens Style.rc in den Ordner der Manifest-Datei angelegt und der folgende Code hineingeschrieben werden:

1 24 "Style.manifest"
Diese Datei muss dann mit dem Borland-Ressourcen-Compiler kompiliert werden, er befindet sich in dem Delphi-Ordner Binrcc32.exe. Der Compiler wird mit der zu kompilierenden Datei als Parameter über die Konsole aufgerufen. Dies geschieht folgendermaßen: Start -> Ausführen -> „Cmd“ eingeben -> [Delphi-Pfad]Binrcc32.exe „[Pfad der RC-Datei]“ -> [Enter drücken]
Die dadurch entstandene Datei Style.RES muss dann nur noch in die Delphi-Anwendung eingebunden werden, diese Datei befindet sich in dem Ordner der RC-Datei. Dies geschieht mit der folgenden Compiler-Direktive:

{$R Style.RES}

Diese Direktive kann irgendwo im Code eingefügt werden, dabei spielt es keine Rolle, in welcher Unit oder an welcher Stelle im Code.Nachdem die Anwendung mit dieser Ressource kompiliert wurde, wird zum anzeigen des System-Styles keine weitere Datei mehr benötigt.Wer diese RC-Datei nicht über den Delphi-Ressourcen-Compiler kompilieren möchte, kann diese Datei auch einfach in das aktuelle Projekt hinzufügen (über Project / Add to Project…), sie wird dann automatisch kompiliert und mit eingebunden. Dabei darf die Ressource dann nicht mehr manuell über die Compiler-Direktive eingebunden werden, da dies bereits Delphi übernimmt.
Alternativ kann ab Delphi 7 die Komponente TXPManifest benutzt werden, welche im Grunde genommen genau nach dem oben beschriebenem Verfahren arbeitet. Die Komponente selbst hat keinen nutzen, durch sie wird aber die Unit XPMan eingebunden, die durch die besagte Kompiler-Direktive das Manifest als Ressource einbindet. Es reicht also, nur die Unit XPMan einzubinden. Alle Dateien müssen sich beim Compilieren und Einbinden der Ressource im selben Ordner befinden!

Ab Delphi 2007 gibt es diese Komponente bzw. Unit nicht mehr, diese Themes können nun in den Projekteinstellungen aktiviert werden.Dies kann mit folgender Option in der Delphi IDE eingestellt werden:Menü Projekt/Optionen -> Anwendung -> Checkbox „Laufzeit-Themes aktivieren“. Der Weg über die Ressource funktioniert aber natürlich immer noch.