|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите спасите: удаление динамически созданных объектов
Значит так, в combobox выбираю количество предложим edit объекты, создаем их и при повторном выборе их количество изменяется. У меня проблема в их уменьшении, т.е. в уменьшении их количества.
По сути мне надо удалить и создать заново. |
#2
|
||||
|
||||
1) Зачем удалять все и создавать заново, когда можно удалить лишние и очистить предыдущие?
2) Чтоб удалять, нужно хранить созданные в глобальном массиве или удалять, получая объект (например через FindComponent). jmp $ ; Happy End! The Cake Is A Lie. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
alex_rR (10.04.2012)
|
#3
|
|||
|
|||
да я делал именно так "Зачем удалять все и создавать заново, когда можно удалить лишние и очистить предыдущие", у меня не получалось удалять объекты. И массивы были локальными(если я правильно выражаюсь, т.е. внутри процедуры).
Можно чуть подробнее про find, пример так сказать. Попробовал с глобальным массивом но я видать что-то не до понимаю. Буду очень признателен если покажете как именно надо оформить(синтаксис). Последний раз редактировалось alex_rR, 10.04.2012 в 21:20. |
#4
|
|||
|
|||
Естественно, массивы должны быть как минимум на уровне формы.
Код:
type TForm1 = class(TForm) ... private FEdits : Array Of TEdit; procedure CreateMyEdits(N : Integer); end; procedure TForm1.CreateMyEdits(N : Integer); var C, I : Integer; begin C := Length(FEdits); // Чистим все контролы For I := Low(FEdits) To High(FEdits) Do FEdits[i].Text := ''; // Если у нас лишние контролы If C > N Then Begin For I := N To High(FEdits) Do Begin FreeAndNil(FEdits[i]); End; SetLength(FEdits,N); End; // Если у нас не хватает контролов If C < N Then Begin SetLength(FEdits,N); For I := C-1 To High(FEdits) Do Begin FEdits[i] := TEdit.Create(Self); ... End; end; |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
alex_rR (10.04.2012)
|