Il 22/08/2014 16:44, Michael Thompson ha scritto:
> The implementation of the OnSelectItem event of TListView doesn't appear to me to be correct. > With MultiSelect false, selecting a new Item on the list generates, as expected, two events: the unselect of the previous Item, and the select of the new one. > But they're generated in the reverse order. i.e. first the selection of the new one, then the unselect of the old one.

Out of curiosity, which widgetset are you using? My memory (haven't checked this for at least 3 years) says the events were fired in different sequences between different widgetsets. Mind you, I can't think of how a change in event order will affect any of the examples you've given.


This behavior is common at least to GTK2 and Qt. That's why I think it originates in LCL. I consider it a bug, because the last event generated doesn't represent the actual final status of TListView (i.e. an Item selected or no Item selected), but may represent a previous intermediate condition. Extra code in application is required to sort out things.

There are many differences between different widgetset TListview implementation, and a lot of care must be exercised if you want your application behave the same way in all condition. e.g.: under Qt a programmatical select of an Item doesn't unselect the previous one, even if MultiSelect is not active, and a programmatical unselect of an Item doesn't trigger the OnSelectItem event if ViewStyle is vsList, but does trigger it if the ViewStyle is vsReport!

Giuliano


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to