Вообще, мне кажется, вместо динамического создания здесь можно менять свойство Visible и не мучиться.
Во-вторых, у вас в этой процедуре объекты TLabel создаются каждый раз одни и те же, поэтому их, я думаю, логичнее тоже создать лишь однажды (design time)...
Но если я вас не убедила, то в целом можно переделать ваш код так:
Код:
procedure TForm6.ComboBox1Change(Sender: TObject);
var
ComboBox3:TComboBox;
ComboBox4:TComboBox;
Edit1:TEdit;
Edit2:TEdit;
i:integer;
begin
// если компоненты присутствуют — удаляем
Edit1 := TEdit(FindComponent('Edit1'));
Edit2 := TEdit(FindComponent('Edit2'));
ComboBox3 := TComboBox(FindComponent('ComboBox3'));
ComboBox4 := TComboBox(FindComponent('ComboBox4'));
if Edit1 <> nil then Edit1.Free;
if Edit2 <> nil then Edit2.Free;
if ComboBox3 <> nil then ComboBox3.Free;
if ComboBox4 <> nil then ComboBox4.Free;
ComboBox2.Items.Clear;
if ComboBox1.Text='Пластинчатый' then
begin
ComboBox3:=TComboBox.create(self);
ComboBox3.Parent:=Form6;
ComboBox3.Name := 'ComboBox3'; // присваиваем имя, чтобы найти потом
ComboBox3.Left:=304;
ComboBox3.Top:=54;
ComboBox4:=TComboBox.create(self);
ComboBox4.Parent:=Form6;
ComboBox4.Name := 'ComboBox4';
ComboBox4.Left:=304;
ComboBox4.Top:=104;
ComboBox2.Items.Add('ЭГА-1-10-6-4-2');
ComboBox2.Items.Add('ЭГА-1-10-6-6-3');
ComboBox2.Items.Add('ЭГА-20-9-6-2');
ComboBox3.Items.Add('4');
ComboBox3.Items.Add('6');
ComboBox3.Items.Add('8');
ComboBox4.Items.Add('2');
ComboBox4.Items.Add('3');
ComboBox4.Items.Add('4');
Label1.Caption:='Число электродов';
Label2.Caption:='Число электрополей';
end
else
if ComboBox1.Text='Трубчатый' then
begin
Edit1:=TEdit.create(self);
Edit1.Parent:=Form6;
Edit1.Name := 'Edit1';
Edit2:=TEdit.create(self);
Edit2.Parent:=Form6;
Edit2.Name := 'Edit2';
ComboBox2.Items.Add('С-5');
ComboBox2.Items.Add('ПГ-8');
ComboBox2.Items.Add('ДМ-316');
Label1.Caption:='Длина труб';
Label2.Caption:='Диаметр труб';
end;
end;
Объекты Label1 и Label2 я поставила на форму статически at design time. Ибо смысла создавать всякий раз одни и те же абсолютно одинаковые компоненты я не вижу.