Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2010, 16:57   #1
Alex1991
Форумчанин
 
Аватар для Alex1991
 
Регистрация: 18.10.2008
Сообщений: 166
По умолчанию Уничтожение компонентов на форме, которые относятся к классу TLabel

У меня выскакивает ошибка List index out of bounds.
Пробовал уничтожить например компоненты класса TEdit то все работало
Посмотрите пожалуйста код:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  for i:=0 to Self.ComponentCount-1 do
    if Self.Components[i] is TLabel then
      Self.Components[i].Free;
end;

end.
Alex1991 вне форума Ответить с цитированием
Старый 19.02.2010, 17:00   #2
UnChanter
Пользователь
 
Аватар для UnChanter
 
Регистрация: 14.12.2008
Сообщений: 65
По умолчанию

после удаления компонента, у тебя меняется переменная Self.ComponentCount, а в цикле FOR это не допустимо! Вместо FOR пробуй WHILE
UnChanter вне форума Ответить с цитированием
Старый 19.02.2010, 17:13   #3
Alex1991
Форумчанин
 
Аватар для Alex1991
 
Регистрация: 18.10.2008
Сообщений: 166
По умолчанию

Пробовал уничтожить например компоненты класса TEdit то все работает ...
А с помощью While ничего не меняеться.. та же ошибка ((
Alex1991 вне форума Ответить с цитированием
Старый 19.02.2010, 18:15   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,528
По умолчанию

//for i:=0 to Self.ComponentCount-1 do
for i:=Self.ComponentCount-1 dowunto 0 do // и все будет нормально
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вынос компонентов программы (которые делфи всталяет в каждую программу) из проги в dll GanGSISoft Общие вопросы Delphi 17 02.07.2009 17:24
Поиск компонентов на форме Des Общие вопросы Delphi 10 29.04.2009 11:17
Выбор компонентов на форме HPS Общие вопросы Delphi 6 28.01.2009 14:34
Использование компонентов в другой форме White БД в Delphi 3 27.08.2008 13:32
стандартные иконки делфи которые на палитре компонентов ozhjog Общие вопросы Delphi 2 04.07.2007 17:39