Eso es porque haces lo mismo tanto si
Selected es
Nil como si no; lo que causa la excepción es tratar de acceder a
SubItems cuando
Selected = Nil. Lo que deberías hacer en vez de eso es algo así como:
if Assigned(LVWkrWorker.Selected)
and Assigned(LVWkrWorker.Selected.SubItems)
and (LVWkrWorker.Selected.SubItems.Count >= 5) then
begin
{ asigna los valores para SubItems }
end;
Eso asignará valores para sub-items sólo si hay algo seleccionado y tiene al menos cinco SubItems.
Lo que hagas en caso contrario depende de lo que necesites; por ejemplo, si hay menos de cinco subitems podrías usar
SubItems.Add para crear los que falten, etc.