Каким образом можно воссоздать динамически создаваемые Button в n-ом количестве, с возможностью их уничтожения?
В общем есть Edit, где указывается количество кнопок, после нажатия рядом лежащего Button должны воссаздаться эти кнопки... При изменении числа в Edit нужно получить это число кнопок, вместо старого варианта... Прошу хотя бы упрощенного варианта... Я пробовал так:
Код:
var
kolvo,y:integer;
But:array of TButton;
procedure TForm1.Button3Click(Sender: TObject);
var
z,kl:integer;
begin
if kolvo<>99 then //При старте программы kolvo пока выставляется на 99
for z := 0 to kolvo do
begin
but[z].Free; //Вместо Free пробовал и Destroy...
end;
kl:=strtoint(edit3.text); //Читается количество элементов, введенное пользователем
if (kl<50) and (kl>1) then
begin
kolvo:=(kl-1); //Вычитаю 1, так как при
setlength(but,kolvo); //этой функции первым элементом явлется нулевой, а не первый...
end;
y:=190; //Высота первой кнопки
if (kolvo<>99) then //Создаю кнопки
for z := 0 to kolvo do
begin
//Создаем Button
But[z] := TButton.Create(Self);
But[z].Parent := Self;
But[z].Tag:=z;
But[z].Caption:='...';
But[z].Left:=280;
But[z].Top:=y;
But[z].Width:=33;
But[z].OnClick:=BtnCl;
y:=y+30;
end;
end;
Проблема в том, что повторное нажатие кнопки выводит ошибку работы с памятью. Видимо проблемы с удалением кнопок... Либо я что-то недоделал...