![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
События происходят дважды. Это нормально? [D7, WinXP]
ZemA © (2004-09-02 12:32:00)Всем добрый день.
Как вы считаете, мастера, когда события OnChange, OnChanging у TListView происходят дважды это нормально?
Вернее: OnChanging, OnChange, OnChanging, OnChange.
ZemA (2004-09-02 14:49:00) [1]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 есть. Перетрудился видно.
ВСЕМ СПАСИБО.
ZemA (2004-09-02 14:35:00) [2]>Анонимщик © (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 есть. Перетрудился видно.
ВСЕМ СПАСИБО.
Анонимщик (2004-09-02 14:12:00) [3]Да ты посмотри, какие именно причины вызывают генерацию событий.
Digitman (2004-09-02 14:10:00) [4]
> ZemA (02.09.04 13:58) [12]
да State же элементов меняются !
сфокусирован/несфокусирован, выбран/не выбран и т.п.
ZemA (2004-09-02 14:10:00) [5]можно сделать так
var XItem: TListItem;
procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin
if Item = XItem then exit;
..........................
XItem := Item;
end;
но считаю то что событие генерится 2 раза это неправильно.
ZemA (2004-09-02 14:07:00) [6]> Анонимщик © (02.09.04 14:00) [13]
результат в [4]
Анонимщик (2004-09-02 14:00:00) [7]На точке останова:
View->Debug Windows->CallStack
ZemA (2004-09-02 13:58:00) [8]Неужели у вас у всех события не дублируются???
ZemA (2004-09-02 13:16:00) [9]всем. ради эксперимента попробуйте.
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:13:00) [10]Digitman © (02.09.04 13:11) [9]
Change = ctState
Digitman (2004-09-02 13:11:00) [11]
> ZemA (02.09.04 13:08) [8]
а параметр Change ? анализировал ?
ZemA (2004-09-02 13:08:00) [12]Digitman © (02.09.04 13:02) [6]
я смотрел. результат в ZemA (02.09.04 12:51) [4]
ZemA (2004-09-02 13:05:00) [13]> Анонимщик © (02.09.04 12:56) [5]
как это сделать?
Digitman (2004-09-02 13:02:00) [14]
> ZemA
ты действуешь по принципу чукчи, объезжающего просторы родной тундры - "что вижу - то и пою"
а ты возьми лупу (отладчик) да посмотри gjdybvfntkmytq, на какой ListItem при вызове того или иного обработчика в тот или иной раз ссылается параметр Item !
Анонимщик (2004-09-02 12:56:00) [15]ZemA
А давай так: протрассируешь грамотно, с заглядыванием в стек вызовов, и нам расскажешь.
ZemA (2004-09-02 12:51:00) [16]> да, это нормально
> каждая пара событий возбуждается для своего ListItem - один ListItem, например, теряет фокус, другой получает
неа.
- выделяю 1ListItem - 1OnChanging, 1OnChange, 1OnChanging.
- 1ListItem теряет фокус, получает 2ListItem.
- 1OnChanging, 1OnChange, 1OnChanging, 1OnChange, 2OnChanging, 2OnChange, 2OnChanging.
ПОЧЕМУ???
Digitman (2004-09-02 12:36:00) [17]
> это нормально?
да, это нормально
каждая пара событий возбуждается для своего ListItem - один ListItem, например, теряет фокус, другой получает
Ega23 (2004-09-02 12:35:00) [18]Критерий нормальности?
Эта... Пеньпеньдикуляр к поверхности...
Алхимик (2004-09-02 12:34:00) [19]Критерий нормальности?