Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];

Вниз

Подскажите как удалять динамически созданные компоненты   Найти похожие ветки 

 
yastal   (2002-05-10 19:25) [0]

Подскажите как удалять динамически созданные компоненты, например, я создаю много кнопок на форме во время выполнения моей программы, как можно удалить любую из кнопок? И еще, как запомнить расположение и все параметры этих кнопок после для повторного запуска программы с этими же кнопками


 
Song   (2002-05-10 19:39) [1]

MyButton.Free


 
yastal   (2002-05-10 21:45) [2]

Но у меня их несколько, а удалять надо не все, а по выбору.
как узнать MyButton.Name?


 
Pat   (2002-05-10 22:50) [3]

Используй TObjectList


 
Song   (2002-05-11 10:05) [4]

2yastal (10.05.02 21:45)
Странный у Вас вопрос. А создавали-то как?


 
Pat   (2002-05-11 11:20) [5]

При создании новой кнопки, ставь NewButton.Parent:=form1. Тогда при уничтожении формы уничтожатся кнопки.


 
Song   (2002-05-11 11:24) [6]

Parent указывает не на это. Собственник-разрушитель передаётся в качестве параеметра конструктора Create


 
yastal   (2002-05-14 12:05) [7]

Хорошо, я пробую.


 
Johnny Smith   (2002-05-14 12:23) [8]

2yastal (10.05.02 21:45)
Но у меня их несколько, а удалять надо не все, а по выбору.
как узнать MyButton.Name?

Можешь генерить имена при создании кнопки (кто мешает-то?). Найти нужную кнопку можешь следующим образом:
for i:=form1.ControlCount-1 downto 0 do
if form1.Controls[i] is TButton then
if TButton(form1.Controls[i]).Name="ButtonXXX" then
begin
.....
end;


 
shane54   (2002-05-14 13:25) [9]

Вот реальный пример - создаешь массив, в котором хранятся все кнопки, обращаешся к ним по [x, y].

var
But : array [0..7, 0..7] of TButton;

procedure TForm1.FormCreate(Sender: TObject);
var
B : TButton;
i, j : integer;
begin
for i := 0 to 7 do
for j := 0 to 7 do
begin
B := TButton.Create(Form1);
B.Left := i * 30 + 15;
B.Top := j * 30 + 15;
B.Width := 30;
B.Height := 30;
B.Parent := Form1;
B.Tag := i * 20 + j;
B.OnClick := MyClick;
But[i, j] := B;
end;

end;

procedure TForm1.MyClick(Sender : TObject);
var
T, x, y : integer;
begin
T := (Sender as TButton).Tag;
x := T div 20;
y := T mod 20;
But[5, 5].Free; // Указываешь сдесь нужную тебе кнопку
end;


 
Yuriy   (2002-05-14 19:35) [10]

Лично, у меня было нечто похожее - динамические массивы компонентов - т.е. я даже не мог знать заранее сколько их будет создано, но и решается это весьма просто -

var
MyButton: array of TButton;
......
MyButton[NN] := TButton.Create(Application);
MyButton[NN].Parent:=....;
.....
MyButton[NN].Tag := NN;

Теперь если нужно узнать на какую конкретно кнопку кликнули -

if (Sender is TButton) then
begin
R1 := TButton(Sender).Tag;
......
end;

Ну а уж удалить любую кнопку по прекрасному имени MyButton[NN], где NN порядковый номер кнопки, и он же Tag кнопки - :))


 
yastal   (2002-05-14 19:48) [11]

всем СПАСИБО!!!



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

Форум: "Основная";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.007 c
1-73317
Mikeee
2002-05-12 13:17
2002.05.23
Как убрать строку из ListBox-a...


3-73037
Timka
2002-04-22 17:38
2002.05.23
Прошу подсказку


3-73003
_TOLTEC
2002-04-25 15:53
2002.05.23
Mysql и blob


14-73396
VID
2002-04-16 13:29
2002.05.23
Какой win200 лучше ?


3-72992
Abu
2002-04-25 10:42
2002.05.23
ADODataSet или ADOQuery возвращает пустой набор





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский