Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как програмно удалить с формы лаблы, кнопки и т.д. ? [D6]


Masa ©   (2002-12-26 14:02:00) 

?


TTCustomDelphiMaster   (2002-12-27 15:17:00) [1]


> b[i] := nil;


Так ни в коем случае


> b[i].Destroy;


А так не рекомендуется


han_malign   (2002-12-27 15:16:00) [2]

b[i] := nil; - не прокатит - в отличие от динамических массивов, открытых строк и интерфейсов, для ссылок на экземляры классов "compiller magic" не проходит.


Namor   (2002-12-27 14:55:00) [3]

Полностью согласен с уважаемым мастером han_malign.
Или так b[i] := nil;
Или так b[i].Destroy;


han_malign   (2002-12-26 18:22:00) [4]

procedure TfrmAdd.Execute(btnSet : TheMenu; num : integer);
var
b : array[1..4] of TButton;
i : integer;
begin
for i := 1 to 4 do
begin
b[i] := TButton.Create(self);
b[i].Parent := Self;
b[i].Width := Panel1.Width - 10;
b[i].Height := 25;
b[i].Left := 5;
b[i].Top := i * 25;
b[i].Caption := btnSet[num][i].caption;
b[i].onClick := ButtonClick;
b[i].Tag := StrToInt(IntToStr(num)+IntToStr(i));
if (btnSet[num][i].caption = "") then b[i].Visible := False;
end;
ShowModal;
for i := 1 to 4 do b[i].Free;
end;
- только не пойму, зачем их создавать динамически, если состав и размещение постоянные.


Dona   (2002-12-26 17:29:00) [5]

Интересно, зачем? Ты ведь их сам создавал.

Разве что использовать св-во Form.ComponentCount - кол-во компонентов формы.
Доступ к i компоненту есть через св-во Form.Components[i] (нумерация с 0). Проверить, явл-ся ли этот компонент кнопкой, можно так
if Form1.Components[i] IS TButtonthen ...


Masa   (2002-12-26 17:10:00) [6]

Как узнать сколько кнопок на форме всего ?


Masa   (2002-12-26 17:05:00) [7]

Нужно удалить с модальной формы.


Pat   (2002-12-26 16:22:00) [8]

b[i] := TButton.Create(application);
И можно не удалять самому...
З.Ы. Сейчас начнутся разговоры про стиль программирования :-))


TTCustomDelphiMaster   (2002-12-26 14:27:00) [9]

Они удалятся вместе с формой сами. Но если очень надо, то b[i].Free;


Masa   (2002-12-26 14:27:00) [10]

это кнопки создаються.
лаблы так же.


Masa   (2002-12-26 14:22:00) [11]

Вот так создаються.

procedure TfrmAdd.Execute(btnSet : TheMenu; num : integer);
var
b : array[1..4] of TButton;
i : integer;
begin
for i := 1 to 4 do
begin
b[i] := TButton.Create(self);
b[i].Parent := Self;
b[i].Width := Panel1.Width - 10;
b[i].Height := 25;
b[i].Left := 5;
b[i].Top := i * 25;
b[i].Caption := btnSet[num][i].caption;
b[i].onClick := ButtonClick;
b[i].Tag := StrToInt(IntToStr(num)+IntToStr(i));
if (btnSet[num][i].caption = "") then b[i].Visible := False;
end;
ShowModal;
end;


Song   (2002-12-26 14:17:00) [12]

Если они были созданы в design-time, они удалятся сами. Если были созданы в run-time то смотря как были созданы.


Lady D   (2002-12-26 14:16:00) [13]

Они сами удалятся вместе с формой. А вообще FreeAndNil(...);


Dona   (2002-12-26 14:16:00) [14]

>На пример я создаю во время исполнения 10 лаблов, после закрытия формы их надо удалить.

Скорее перед закрытием


Masa   (2002-12-26 14:14:00) [15]

Song ©
со своей.
На пример я создаю во время исполнения 10 лаблов, после закрытия формы их надо удалить.


DOOMin   (2002-12-26 14:11:00) [16]

А не проще их скрыть? Просто visible=false


Dona   (2002-12-26 14:08:00) [17]

Destructor
Object.Free;


Song   (2002-12-26 14:07:00) [18]

Со своей проги или чужой?


Наверх

Титульная страница Поиск, карта сайта Написать письмо