Хорошо, я полностью понял это, и это может помочь другим, кто обеспокоен этой проблемой.
Я начал с того, что заметил, что элемент управления ListView в C ++ Builder выглядит «правильно» в Windows 7, поэтому я посмотрел в исходном коде VCL, чтобы увидеть, какую магию они делают, чтобы сделать ListView похожим элемент управления списком в проводнике Windows. Я наткнулся на одну строку кода, которая выглядела многообещающе:
SetWindowTheme(Handle, 'explorer', nil);
Из документации SDK эта функция «Заставляет окно использовать другой набор информации о визуальных стилях, чем обычно использует его класс».
Итак, я попытался вызвать эту функцию в моем элементе управления WinForms ListView:
[DllImport("uxtheme.dll", CharSet = CharSet.Unicode)]
public static extern int SetWindowTheme(IntPtr hWnd, String pszSubAppName, String pszSubIdList);
SetWindowTheme(myListView.Handle, "explorer", null);
... и, слава богу, это сработало! Наконец, ListView выглядит так, как будто он принадлежит остальной части ОС! Спасибо, Borland Inprise Embarcadero! Вы действительно хороши для чего-то!