Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1276392661
DROWSY
2010-06-13 05:31
2010.09.12
Если TIBDataSet - набор из нескольких связанных таблиц...


15-1276860797
SD Software
2010-06-18 15:33
2010.09.12
Как скомпилировать драйвер


2-1275858326
HRustBB
2010-06-07 01:05
2010.09.12
Как залить TImage TBitmap-ом


15-1275932643
test
2010-06-07 21:44
2010.09.12
База данных Delphi?


2-1276380946
AKE
2010-06-13 02:15
2010.09.12
Принадлежит ли точка треугольнику?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский