Показать сообщение отдельно
  #24  
Старый 01.04.2008, 18:23
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

А вообще, хочу сказать, что когда на форме присутствуют однотипные контролы (TEdit в вашем случае), работать с ними через поиск - не очень правильно. Т.е. можно, конечно, но создает лишние трудности при написании и чтении текста.

Есть такой хороший класс, называется TObjectList, он предназначен как раз для хранения контролов. Причем ему, вообще говоря, все равно - однотипные они или нет.

Я бы посоветовал при создании формы создать такой объект:
Код:
procedure TForm1.Create(Sender: TObject);
begin
  ...
  ListOfEdits := TObjectList.Create(False);
Параметр False в вызове конструктора означает, что, при уничтожении TObjectList не будет уничтожать контролы, которые хранит (нам это не нужно, потому что их уничтожит сама форма, когда будет вызван ее деструктор). Потом, при создании ваших Edit`ов заносите их в список в порядке создания:
Код:
procedure TForm1.CreateEdits;
const
  EDIT_COUNT = 150000;
var
  AnEdit: TEdit;
...
begin
  ...
  for i := 0 to EDIT_COUNT - 1 do begin
    AnEdit := TEdit.Ctreate(Self);
    with AnEdit do begin
      Name := 'Edit' + IntToStr(i);
      Lef := 10;
      Top := i * AnEdit.Height + 2; 
      Parent := Self;
    end;
    ListOfEdits.Add(AnEdit);
  end;
  ...
end;
А потом просто обращайтесь к ним по индексу:
Код:
...
E_Stroka := TEdit(ListOfEdits.Items[i]).Text;
...
При уничтожении формы, уничтожьте список:
Код:
procedure TForm1.FormDestroy(Sender: TObject);
begin
  ListOfEdits.Free;
end;
Ответить с цитированием