Форум: "Начинающим";
Текущий архив: 2010.09.12;
Скачать: [xml.tar.bz2];
ВнизКак удалить динамические созд-е кнопки... Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c