Работа выполняется в нескольких потоках, а TListView обновляется с этих потоков. У каждого из них есть ссылка на связанный с ними TListItem в ListView, поэтому не имеет значения, будет ли сортировка списка отсортирована позже. В любом случае, правая ячейка будет обновлена.Обновление StringGrid из темы
Но теперь я бы хотел использовать stringgrid вместо listview. Однако, если пользователь сортирует stringgrid, как поток знает, какая ячейка обновляется? Я не нахожу ссылки на помеченные в поток для обратного вызова. Я бы хотел иметь ссылку и не искать каждый раз в правильной ячейке. Это возможно?
EDIT: Вот что я храню в списке мы обсуждали в комментариях:
TInfoPackList содержат объекты типа:
TInfoPack = class
ID: Integer;
Name: string;
Location: string;
Thread: TMyThread;
end;
Есть больше членов, но они являются те, которые имеют отношение к показать в сетке.
Вы используете TStringGrid или сторонний StringGrid, как AdvStringGrid от TMS? –
Флаги поднимаются вашим почтовым сообщением, но я собираюсь предположить, что вы уже знаете, что VCL не является потокобезопасным и что вы должны делать специальные меры предосторожности при доступе к чему-либо из VCL из потоков. –
Это звучит для меня не так. Нити не должны иметь ссылок на объекты gui. Используйте виртуальный элемент управления. Потоки выполняют свою работу. Пусть они обновляют общую структуру данных. Посмотрите на виртуальный контроль. Используйте любую синхронизацию. –