![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как програмно удалить с формы лаблы, кнопки и т.д. ? [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]Со своей проги или чужой?