Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.09.12;
Скачать: CL | DM;

Вниз

Как удалить динамические созд-е кнопки...   Найти похожие ветки 

 
FEV   (2010-06-19 12:49) [0]

В общем вот такая процедура создания кнопок...
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;


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

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


 
turbouser ©   (2010-06-19 12:59) [2]

Free


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


> FEV   (19.06.10 12:49)  

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


 
Palladin ©   (2010-06-19 16:31) [4]

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


 
RWolf ©   (2010-06-19 17:59) [5]


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

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

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

Form1.ControlCount и Form1.Controls[].


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

Я переделал функцию создания кнопок, через массив... И функцию их стирания. Только одиночное стирание работает нормально, но при повторном вылетает ошибка...
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;


 
Palladin ©   (2010-06-19 19:04) [7]

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


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

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


 
RWolf ©   (2010-06-19 19:29) [9]


> но при повторном вылетает ошибка...
> 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:47) [10]

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


 
RWolf ©   (2010-06-19 19:53) [11]

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


 
Anatoly Podgoretsky ©   (2010-06-19 20:29) [12]


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

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


 
Palladin ©   (2010-06-19 21:53) [13]


> FEV   (19.06.10 19:23) [8]

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


 
KilkennyCat ©   (2010-06-20 00:20) [14]


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

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


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


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

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



Страницы: 1 вся ветка

Текущий архив: 2010.09.12;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.011 c
15-1276810212
Юрий
2010-06-18 01:30
2010.09.12
С днем рождения ! 18 июня 2010 пятница


15-1276959726
ArtGrek
2010-06-19 19:02
2010.09.12
Protocol


15-1276725671
Кто б сомневался
2010-06-17 02:01
2010.09.12
Php проверка перед submit


6-1225222273
SKIPtr
2008-10-28 22:31
2010.09.12
Изменения файла в интернете


6-1226166639
Igor2010
2008-11-08 20:50
2010.09.12
idhttp запрос