Ну да, событие OnChange комбобокса внутри себя меняет значение этого комбобокса. Естественно, получаешь ошибку St
ack overflow (переполнение стека), т.к обработка изменения приводит к запуску еще одной обработки (изменение значения).
Попроьбуй в начале отключить этот обработчик, а в конце его подключить обратно:
Код:
procedure TForm4.ComboBox1Change(Sender: TObject);
begin
ComboBox1.Onchange := Nil;
// Здесь как и было раньше (твой код)
ComboBox1.Onchange := ComboBox1Change;
end;