Seit dem Erscheinen von Windows XP haben sich die Common Controls (ComCtrls) grundlegend geändert. Bei älteren Delphi Versionen
sind Bitmap-Buttons (TBitButton, TSpeedButton, von Borland ohne ComCtrls entwickelt) unterschiedlich im Erscheinungsbild gegenüber den normalen (TButton).
Zur Vereinheitlichung gibt es Ansätze von verschiedenen Programmierern, sowie von Borland selbst:
Wer als Entwicklungsumgebung Delphi 7 nutzt ist fein 'raus, da dessen TBitButton und TSpeedbutton die
Themes Unit (von Mike Lischke) nutzen.
Ältere Delphi Versionen bieten diese Unterstützung nicht. Nach kurzem Kontakt
mit Mike Lischke stellte sich heraus, daß sein XP Theme Manager, der ab D4 verfügbar ist,
vermutlich mit geringem Aufwand auf Delphi 3 angepaßt werden kann. In der Zwischenzeit ergab sich jedoch eine andere Lösung:
Der unterschiedliche Stil der Buttons ist unschön.
Nach langem Suchen für einen Windows-XP geeigneten Ersatz für die o.g. Bitmap-Buttons, stieß ich letzte Woche (zufällig) auf einen Artikel bei Codeproject: Artikel
Die TXPButton-Komponente ist in Delphi 3 umgesetzt und hat leicht geänderte Eigenschaften zum TButton. Dafür ist die Komponente TXPButton von TButton abgeleitet. Zusätzliche Eigenschaften sind:
Der TXPButton kann genau wie der TButton genutzt werden, eine Änderung ist das Aufrufen der SetImage Funktion, diese sendet das Bitmap an den Button:
Da die Funktion
erst ab den Common Controls 6.0 integriert sind, kann z.B. Windows 98 die Bitmap nicht darstellen. Um Benutzer älterer Windows Versionen nicht auszuschließen, ist folgende Änderung vorgenommen worden:
Der TXPButton hat eine zusätzliche Eigenschaft "Caption2". Falls eine ComCtl32.dll mit kleinerer Version als 6.0 auf dem System ist, so wird anstatt des Bitmaps der Text von "Caption2" ausgegeben. So bleibt zumindest der Sinn des Buttons verständlich.
v0.1 Sourcecode + Beispielprojekt (D3) downloaden
v0.1 Sourcecode + Beispielprojekt (D7) downloaden
Kommentar