Hola,
El código fuente que refieres es correcto salvo por el detalle que el error muestra: el índice requerido (el elemento de la lista requerido) puede no existir, por ejemplo, porque puedes hacer "doble-clic" en la lista sin que ningún elemento de la misma esté seleccionado.
Tú no estás comprobando ese detalle y de ahí el problema. ¿Cómo comprobarlo? Bueno. Una solución podría ser:
Código Delphi
[-]
procedure TFormForm01.ListBox1DblClick(Sender: TObject);
begin
if ListBox1.ItemIndex <> -1 then
begin
Panel2.Visible := True;
Panel2.Caption := ListBox1.Items.Strings[ListBox1.ItemIndex];
end;
end;