Zitat von
Chakotay1308:
Der ThemeManager patcht die Komponenten nicht, sondern subclasst sie. Das ist ein Unterscheid!
Doppelt richtig
@Matthias: Der ListView-Bug wird selbstverständlich durch SubClassing (hui, ich wusste nicht, dass ihr's so genau nehmt...) bei Mikes Lösung behoben:
Delphi-Quellcode:
procedure TThemeManager.ListviewWindowProc(Control: TControl;
var Message: TMessage);
begin
if not DoControlMessage(Control, Message) then
begin
// In opposition to the other window procedures we should
// always apply the fix for TListView, regardless of whether
// themes are enabled or not.
if (Message.Msg = LVM_SETCOLUMN) or
(Message.Msg = LVM_INSERTCOLUMN) then
begin
with PLVColumn(Message.LParam)^ do
begin
// Fix TListView report mode bug.
if iImage = - 1 then
Mask := Mask and not LVCF_IMAGE;
end;
end;
FListViewList.DispatchMessage(Control, Message);
end;
end;
@Bechti: Dank dieser Technik musst Du nicht im Besitzt der
VCL-Quellen sein und hast gegenüber der einfachen Variante mit der Manifest-Datei Controls im "hübschen" XP-Look, die sonst immer noch "hässlich" aussehen würden.