singlepost

Потоки + VCL (Delphi 2007) << На главную или назад  

Здравствуйте.
Ситуация: добавляю из потока через 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).
Из-за чего это происходит и как от этого избавиться?

60 ответов в теме “Потоки + VCL (Delphi 2007)”

  1. 3
    Михаил Асташкевич ответил:

    Проблема решена, прочитал где-то о том, что ViewOrigin имеет осмысленное значение, только если ViewStyle=vsIcon или vsSmallIcon. Вопрос снят.

  2. 2
    Михаил Асташкевич ответил:

    pp.x и pp.y – числа около миллиарда, правильные числа – 0;0. Модет быть я неточно выразился. Правильные значения показывают Watches, pp,x,y – неправильные.

    "ViewOrigin может быть разным при каждом обращении"
    В справки говорится, что это свойство показывает на сколько пикселей Listview был прокручен вправо и вниз, оно должно зависеть только от этого, а не от времени обращения.

  3. 1
    Леонид Максимов ответил:

    делайте

    x:=pp.X;
    y:=pp.Y;

    так как ViewOrigin может быть разным при каждом обращении.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.