Столбцы авторазмера для элементов управления виртуальным списком выполняются с использованием всех элементов, которые видны во время выполнения операции авторазмера. Это поведение элемента управления Delphi TListView
. Попробуйте выполнить ту же операцию в проводнике, и вы сразу увидите, что это стандарт операционной системы.
Когда вы работаете со списком в не виртуальном режиме, содержимое всех строк учитывается при выполнении авторазмера.
Я не уверен, почему вы наблюдаете автоматический размер, учитывающий только первую строку данных. Если это действительно то, что происходит для вас, то я думаю, что в вашем коде должно быть что-то не так, что нам нужно увидеть.
Ваша проблема связана с ошибкой Windows XP. Насколько я вижу, представления виртуального списка не выполняют правильное изменение размера в XP. Я думаю, что проводник переключился с не виртуального на виртуальный между XP и Vista, и я бы не стал спорить, что команда исследователей имела достаточно внутренних рычагов, чтобы решить проблему.
Насколько мне известно, вы не уведомлены о том, что происходит авторазмер, поэтому я думаю, что вам может быть трудно обойти эту проблему. Если вы хотите продолжить это дальше, вы можете попытаться ответить на уведомление HDN_DIVIDERDBLCLICK
для элемента управления заголовка и список для CTRL + . Однако я не уверен, принесет ли такой подход какую-либо радость.