Здравствуйте.
Ситуация: добавляю из потока через Synchronize item'ы в ListView. В ListView на обработке события OnAdvancedCustomDrawSubItem такой код:
var
x,y:longint;
pp:TPoint;
begin
pp:=ListView.ViewOrigin;
x:=ListView.ViewOrigin.X;
y:=ListView.ViewOrigin.Y;
end;
Мало того, что pp.x<>x и pp.y<>y. Ни одно из вышеперечисленных значений не совпадает с тем, что показывают мне Watches. Watches показывают правильно (ListView.ViewOrigin.X=0, ListView.ViewOrigin.Y=0).
Из-за чего это происходит и как от этого избавиться?
22 мая 2009 в 9:04
Проблема решена, прочитал где-то о том, что ViewOrigin имеет осмысленное значение, только если ViewStyle=vsIcon или vsSmallIcon. Вопрос снят.
22 мая 2009 в 0:02
pp.x и pp.y – числа около миллиарда, правильные числа – 0;0. Модет быть я неточно выразился. Правильные значения показывают Watches, pp,x,y – неправильные.
"ViewOrigin может быть разным при каждом обращении"
В справки говорится, что это свойство показывает на сколько пикселей Listview был прокручен вправо и вниз, оно должно зависеть только от этого, а не от времени обращения.
21 мая 2009 в 23:03
делайте
x:=pp.X;
y:=pp.Y;
так как ViewOrigin может быть разным при каждом обращении.