Каким образом можно воссоздать динамически создаваемые Button в n-ом количестве, с возможностью их уничтожения?
В общем есть Edit, где указывается количество кнопок, после нажатия рядом лежащего Button должны воссаздаться эти кнопки... При изменении числа в Edit нужно получить это число кнопок, вместо старого варианта... Прошу хотя бы упрощенного варианта... Я пробовал так:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | var
kolvo,y: integer ;
But: array of TButton;
procedure TForm1 . Button3Click(Sender: TObject);
var
z,kl: integer ;
begin
if kolvo<> 99 then
for z := 0 to kolvo do
begin
but[z].Free;
end ;
kl:=strtoint(edit3 . text);
if (kl< 50 ) and (kl> 1 ) then
begin
kolvo:=(kl- 1 );
setlength(but,kolvo);
end ;
y:= 190 ;
if (kolvo<> 99 ) then
for z := 0 to kolvo do
begin
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 ;
|
Проблема в том, что повторное нажатие кнопки выводит ошибку работы с памятью. Видимо проблемы с удалением кнопок... Либо я что-то недоделал...