Q:

Вопрос по Delphi Contols

Не подскажите можно ли сделать вот так:
TImage(Form1.Controls[2]).Picture := nil;

я заранее проверил по имени контрола, что он Timage;
или же можно делать только так:
TImage(FindComponent('Image1')).Picture := nil;

Или еще как вариант можно ли делать так ? 
With TImage(Form1.Controls[2])do
begin
....
....
end;

A:

Мне кажется, обращение по индексу -- это не очень хорошо, ведь индекс ничего не говорит о намерении вашего кода.  Ну и индекс может поменяться, если вы (или ваш последователь в проекте) добавите ещё контролы.  Лучше обращаться к контролу по имени. 
Кстати, я бы придумал имя более осмысленное, чем Image1: вы среди ночи не скажете, чем отличается Image1 от Image2, а вот Image_UserAvatar от Image_CountryFlag точно отличите. 
В WPF есть возможность адресовать контролы в окне по именам (для вашего случая было бы Form1.Image1), причём в этом случае каст не нужен -- если такая возможность есть и в Delphi, лучше пользоваться ей.