Трудно сказать, чего вы хотите достичь, но, видя, что у вас длинный текст, охватывающий несколько столбцов, я не уверен, что вы используете правильное событие - обычно вы хотите, чтобы текст был обрезан, если он слишком длинный для столбца .
В любом случае, лучше всего прочитать раздел 5.2 «Циклы и этапы рисования» в файле документации VirtualTreeView.pdf и найти подходящее событие, которое будет использоваться для рисования. Для OnAfterItemPaint
говорится:
Стадия рисования после элемента используется для добавления элементов, специфичных для узла, таких как фреймы и т. П.
которые касаются всех столбцов этого узла и вызываются один раз для каждого узла.
так что я думаю, это, вероятно, , а не тот, который вы хотите использовать.
Edit:
ОК, если вы собираетесь объединить ячейки, вам нужно только удалить добавление VT1.OffsetX
(и вместо него добавить VT1.TextMargin
), чтобы получить правильное поведение. Это предполагает, конечно, что вы хотите начать вывод текста в первом (индекс 0) столбце, в противном случае вам придется вычислять горизонтальную текстовую позицию по ширине столбца.
Но из описания этапов рисования я все же предпочел бы использовать событие BeforeItemPaint
и установить для параметра CustomDraw
var значение True
, чтобы пропустить любое рисование по умолчанию.