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

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

Удаление динамического компонента [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]

Почему не работает???


Наверх

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