I drop a listbox on the form.
I add 20 items to it.
I enabled multi selection
I select the first and with shift key the last, all items are marked blue as selected.
I change the text of the selected items in a simple loop:
for i:=lb.items.count-1 downto 0 do
begin
if lb.items[ i ].isselected then lb.items[ i ].test:='123';
end;
as a result, only the first and last item are changed and not all.
The IsSelected function only return true for me for the first and last item.