Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как удалить динамические созд-е кнопки... [D7]


FEV ©   (2010-06-19 12:49:00) 

В общем вот такая процедура создания кнопок...
kolvo - тип integer. Определяет количество кнопок.
Почему не работает
 if kolvo<>-1 then
 for z := 1 to kolvo do
 with Button do
 if Name='bt'+inttostr(z) then  Destroy;
?? И чем это можно заменить в данном случае?

procedure TForm1.Button3Click(Sender: TObject);
var
 Button:TButton;
 Edit:TEdit;
 z,y:integer;
begin
 //Удаление кнопок, но не работает вовсе эта функция
 if kolvo<>-1 then
 for z := 1 to kolvo do
 with Button do
 if Name='bt'+inttostr(z) then  Destroy;
 
 if strtoint(edit3.text)<50 then
 kolvo:=strtoint(edit3.text);
 
 y:=190;
 
 for z := 1 to kolvo do
 begin
 //Создание Button
 Button:= TButton.Create(self);
 Button.Parent := self;
 Button.name:='bt'+inttostr(z);
 Button.Tag:=z;
 Button.Caption:='...';
 Button.Left:=280;
 Button.Top:=y;
 Button.Width:=33;
 y:=y+30;
 end;
end;


Плохиш   (2010-06-20 03:44:00) [1]


> FEV   (19.06.10 18:49) [6]
>  но при повторном вылетает ошибка...

Тебе не повезло, а мне стало скушно, пойду займусь более интересным делом...


KilkennyCat   (2010-06-20 00:20:00) [2]


> Palladin ©   (19.06.10 21:53) [13]

как жестоко! он же потом будет искать будку самоубийств...


Palladin   (2010-06-19 21:53:00) [3]


> FEV   (19.06.10 19:23) [8]

Честное пионерское. После просмотра кода, ничего полезного написать нельзя.
А вот давай ты прокомментируешь каждую строчку своего кода, и я тебе расскажу, так же по строчно, где ты заблуждаешься. Так сказать повлияю на твое мировоззрение.


Anatoly Podgoretsky   (2010-06-19 20:29:00) [4]


> но после замены Delphi 7 на Delphi CodeGear 2009 эта проблема
> без исправления кода смылась...

Тебе просто повезло.


RWolf   (2010-06-19 19:53:00) [5]

Range checking в настройка проекта отключено, видимо. Ничего хорошего в этом нет.


FEV   (2010-06-19 19:47:00) [6]

Вбито было постоянно число 3 :D
В общем ничего не понял отчего, но после замены Delphi 7 на Delphi CodeGear 2009 эта проблема без исправления кода смылась...


RWolf   (2010-06-19 19:29:00) [7]


> но при повторном вылетает ошибка...
> setlength(but,strtoint(edit3.text)-1);  
> kolvo:=strtoint(edit3.text)-1;
> …
> for z := 0 to kolvo do

то есть в edit3 вбил 100, длину массива сделал 99, а индексы будешь перебирать от 0 до 99. Как тут не вылететь ошибке?


FEV   (2010-06-19 19:23:00) [8]

Лучше б что полезное написал...


Palladin   (2010-06-19 19:04:00) [9]

Дауны маст дай. Но в америке их почему-то размножают...


FEV   (2010-06-19 18:49:00) [10]

Я переделал функцию создания кнопок, через массив... И функцию их стирания. Только одиночное стирание работает нормально, но при повторном вылетает ошибка...
procedure TForm1.Button3Click(Sender: TObject);
begin
 if kolvo<>-1 then
 for z := 0 to kolvo do but[z].Free;

 if (strtoint(edit3.text)<50) and (strtoint(edit3.text)>1) then
 begin
 setlength(but,strtoint(edit3.text)-1);
 kolvo:=strtoint(edit3.text)-1;
 end;
 
 y:=190;
 
 if kolvo<>-1 then
 for z := 0 to kolvo do
 begin
 //Create 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;
 y:=y+30;
 end;
end;


RWolf   (2010-06-19 17:59:00) [11]


> Почему не работает  
> for z := 1 to kolvo do
>  with Button do  if Name='bt'+inttostr(z) then  Destroy;
> ?? И чем это можно заменить в данном случае?

Button — это указатель на экземпляр класса.
Указатель не может указывать на десять кнопок одновременно, цикл for не имеет смысла.

> И чем это можно заменить в данном случае?

Form1.ControlCount и Form1.Controls[].


Palladin   (2010-06-19 16:31:00) [12]

Нафига? Предупреждения, выдаваемые компилятором, предназначены для черни - программистов. Чудо-программисты их читать не обязаны.


Плохиш   (2010-06-19 13:27:00) [13]


> FEV   (19.06.10 12:49)  

Для начала прочитай предупреждения, которые тебе выдаёт компилятор.


turbouser   (2010-06-19 12:59:00) [14]

Free


FEV   (2010-06-19 12:51:00) [15]

При первом нажатии Button 3 кнопки успешно создаются... При изменении kolvo и нажатии кнопки, пишет ошибку что кнопка bt1 уже существует... Т.е. функция удаления не сработала...


Наверх

Титульная страница Поиск, карта сайта Написать письмо