Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.19;
Скачать: CL | DM;

Вниз

События происходят дважды. Это нормально?   Найти похожие ветки 

 
ZemA   (2004-09-02 12:32) [0]

Всем добрый день.
Как вы считаете, мастера, когда события OnChange, OnChanging у TListView происходят дважды это нормально?
Вернее: OnChanging, OnChange, OnChanging, OnChange.


 
Алхимик ©   (2004-09-02 12:34) [1]

Критерий нормальности?


 
Ega23 ©   (2004-09-02 12:35) [2]

Критерий нормальности?

Эта... Пеньпеньдикуляр к поверхности...


 
Digitman ©   (2004-09-02 12:36) [3]


> это нормально?


да, это нормально

каждая пара событий возбуждается для своего ListItem - один ListItem, например, теряет фокус, другой получает


 
ZemA   (2004-09-02 12:51) [4]

> да, это нормально
> каждая пара событий возбуждается для своего ListItem - один ListItem, например, теряет фокус, другой получает

неа.
- выделяю 1ListItem - 1OnChanging, 1OnChange, 1OnChanging.
- 1ListItem теряет фокус, получает 2ListItem.
- 1OnChanging, 1OnChange, 1OnChanging, 1OnChange, 2OnChanging, 2OnChange, 2OnChanging.

ПОЧЕМУ???


 
Анонимщик ©   (2004-09-02 12:56) [5]

ZemA
А давай так: протрассируешь грамотно, с заглядыванием в стек вызовов, и нам расскажешь.


 
Digitman ©   (2004-09-02 13:02) [6]


> ZemA


ты действуешь по принципу чукчи, объезжающего просторы родной тундры - "что вижу - то и пою"

а ты возьми лупу (отладчик) да посмотри gjdybvfntkmytq, на какой ListItem при вызове того или иного обработчика в тот или иной раз ссылается параметр Item !


 
ZemA   (2004-09-02 13:05) [7]

> Анонимщик ©   (02.09.04 12:56) [5]
как это сделать?


 
ZemA   (2004-09-02 13:08) [8]

Digitman ©   (02.09.04 13:02) [6]
я смотрел. результат в ZemA   (02.09.04 12:51) [4]


 
Digitman ©   (2004-09-02 13:11) [9]


> ZemA   (02.09.04 13:08) [8]


а параметр Change ? анализировал ?


 
ZemA   (2004-09-02 13:13) [10]

Digitman ©   (02.09.04 13:11) [9]

Change = ctState


 
ZemA   (2004-09-02 13:16) [11]

всем. ради эксперимента попробуйте.

procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem;
 Change: TItemChange);
begin
 messagebox("LV change "+Item.Caption);
end;

procedure TForm1.ListView1Changing(Sender: TObject; Item: TListItem;
 Change: TItemChange; var AllowChange: Boolean);
begin
 messagebox("LV changing "+Item.Caption);
end;


 
ZemA   (2004-09-02 13:58) [12]

Неужели у вас у всех события не дублируются???


 
Анонимщик ©   (2004-09-02 14:00) [13]

На точке останова:
View->Debug Windows->CallStack


 
ZemA   (2004-09-02 14:07) [14]

> Анонимщик © (02.09.04 14:00) [13]

результат в [4]


 
ZemA   (2004-09-02 14:10) [15]

можно сделать так

var XItem: TListItem;

procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem;
 Change: TItemChange);
begin
 if Item = XItem then exit;
 ..........................
 XItem := Item;
end;


но считаю то что событие генерится 2 раза это неправильно.


 
Digitman ©   (2004-09-02 14:10) [16]


> ZemA   (02.09.04 13:58) [12]


да State же элементов меняются !

сфокусирован/несфокусирован,  выбран/не выбран и т.п.


 
Анонимщик ©   (2004-09-02 14:12) [17]

Да ты посмотри, какие именно причины вызывают генерацию событий.


 
ZemA   (2004-09-02 14:35) [18]

>Анонимщик ©   (02.09.04 14:12) [17]
события генерирую я выбирая элементы

> ZemA   (02.09.04 13:58) [12]
  выделяется 1TListItem.
1. changing. not 1Item.selected, not 1Item.focused.
2. change.   1Item.selected, 1Item.focused.

  1TListItem теряет фокус.
3. changing. 1Item.selected, 1Item.focused.
4. change.   1Item.selected, not 1Item.focused.
5. changing. 1Item.selected, not 1Item.focused.
6. change.   not 1Item.selected, not 1Item.focused.

  выделяется 2TListItem.
7. changing. not 2Item.selected, not 2Item.focused.
8. change.   2Item.selected, 2Item.focused.

А я все думаю "жалко что у State нет focused, selected", совсем забыл это все у TListItem есть. Перетрудился видно.

ВСЕМ СПАСИБО.


 
ZemA   (2004-09-02 14:49) [19]

18] следует читать так.

>Анонимщик ©   (02.09.04 14:12) [17]
события генерирую я, выбирая элементы.

Digitman ©   (02.09.04 14:10) [16]
правильно!
 выделяется 1TListItem.
1. changing. not 1Item.selected, not 1Item.focused.
2. change.   1Item.selected, 1Item.focused.

 1TListItem теряет фокус.
3. changing. 1Item.selected, 1Item.focused.
4. change.   1Item.selected, not 1Item.focused.
5. changing. 1Item.selected, not 1Item.focused.
6. change.   not 1Item.selected, not 1Item.focused.

 выделяется 2TListItem.
7. changing. not 2Item.selected, not 2Item.focused.
8. change.   2Item.selected, 2Item.focused.

А я все думаю "жалко что у State нет focused, selected", совсем забыл это все у TListItem есть. Перетрудился видно.

ВСЕМ СПАСИБО.



Страницы: 1 вся ветка

Текущий архив: 2004.09.19;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.032 c
1-1094558392
Прямой
2004-09-07 15:59
2004.09.19
Можно ли главной формой сделать Form2


6-1089531062
Chop Suey
2004-07-11 11:31
2004.09.19
Quoted-printable реализация


4-1091426526
olookin
2004-08-02 10:02
2004.09.19
Ресурс для хранения проивзольных файлов


14-1094113857
Гость
2004-09-02 12:30
2004.09.19
Блин... запарился два дня уже не могу сделать


3-1093237909
Teenager
2004-08-23 09:11
2004.09.19
Как можно создать БД что бы сделать справочник в виде таблицы ?