![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление динамического компонента [D7, WinXP]
Nad89 © (2005-06-09 13:27:00)Сразу извиняюсь, если этот вопрос обсуждался 100 раз и т.п... Но объясните мне почему вот это не работает:
var i:integer;
begin
for i:=0 to ComponentCount-1 do
if (Components[i] is TTabSheet) and ((Components[i] as TTabSheet).Caption = 'TabSheet1') then
(Components[i] as TTabSheet).Free;
-=XP=- (2005-06-09 13:59:00) [1]Да и пользователи программы будут благодарны:
((Components[i] as TTabSheet).Caption = ' TabSheet1')
Вряд ли придумаешь более интуитивно понятное название для закладки.
:)
-=XP=- (2005-06-09 13:57:00) [2]Только здесь и цикл лишний.
Ну как же лишний?
function TComponent.FindComponent(const AName: string): TComponent;
var
I: Integer;
begin
if (AName <> '') and (FComponents <> nil) then
for I := 0 to FComponents.Count - 1 do
begin
Result := FComponents[I];
if SameText(Result.FName, AName) then Exit;
end;
Result := nil;
end;
:о)
Anatoly Podgoretsky (2005-06-09 13:50:00) [3]Это работает но только с ошибкой - если найдет, количество элементов списка уменьшится, а количество циклов нет. В [2] указали правильное использование цикла. Только здесь и цикл лишний.
Ega23 (2005-06-09 13:43:00) [4]Можно и так, конечно.
Дело привычки. Я к while привык...
VMcL (2005-06-09 13:40:00) [5]>> Ega23 © (09.06.05 13:34) [5]
Необязательно. Можно и [2].
Ega23 (2005-06-09 13:34:00) [6]while надо использовать в таких случаях.
Nad89 (2005-06-09 13:32:00) [7]-=XP=-, Спасибо ! :)
-=XP=- (2005-06-09 13:31:00) [8]for i:= ComponentCount-1 downto 0 do
Nad89 (2005-06-09 13:31:00) [9]Говорит :
List index out of bounds (32)...
Ega23 (2005-06-09 13:29:00) [10]Почему не работает???