Главная страница
    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.46 MB
Время: 0.006 c
3-73036
VikOS
2002-04-26 09:49
2002.05.23
Paradox


1-73245
Dimaiv
2002-04-26 19:47
2002.05.23
Как в DbGrid сделать так чтобы Hint появлялся только после


4-73440
AFROLOV
2002-03-20 15:06
2002.05.23
Не работает SetParent


14-73390
Anatoly Podgoretsky
2002-04-16 18:31
2002.05.23
Чат


1-73263
Gnom
2002-05-10 20:34
2002.05.23
CTRL+C и Shift+Ins





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