![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с большим количеством TEdit
Viatcheslav © (2002-04-10 08:29:00)При вводе большого количества данных в поля TEDIT (TEdit1, TEdit2,....TEdit50) хотелось бы в дальнейшем работать с ними как с массивом. Подскажите, как это сделать. Спасибо!
Song (2002-04-10 09:34:00) [1]2Chepel (10.04.02 09:18)
Ваша функция не нужна. Для этого в Дельфи уже есть процедура FindComponent
Chepel (2002-04-10 09:18:00) [2]Менее эффективная, но более "ленивая" функция.
Использование:
Edit(N).Text := ...
Edit(N).Enabled := ...
и тд...
Недостатки:
1) работает правильно толькоесли имена ( .Name) эдитов следуют в порядке (Edit1, Edit2, ..., EditN)
2) работает тока если Edit"ы лежат на одном папе (в данном случае - это форма)
3) медленная ( при больших N ~1000(???) )
4) может выбивать экзепшин, если использовать как
Edit(N).Text := "Something"; при неправильном N
Достоинства:
1) Не надо присваивать массив
2) Не надо менять код (см. 4) если меняется кол-во Edit"ов
function TForm1.Edit(Index: Integer): TEdit;
var
i, cnt: Integer;
C: TControl;
CtrlName: string;
begin
cnt := ControlCount - 1;
CtrlName := "Edit"+IntToStr(Index);
for i:=0 to cnt do
begin
C := Controls[i];
if CompareText(C.Name, CtrlName) = 0 then
begin
Result := C as TEdit;
Exit;
end;
end;
Result := nil;
end;
Song (2002-04-10 08:33:00) [3]Var array [1..50] of TEdit;
Song (2002-04-10 08:33:00) [4]Var Arr:array [1..50] of TEdit;