Показать сообщение отдельно
  #8  
Старый 03.08.2010, 22:09
Аватар для kadnikov
kadnikov kadnikov вне форума
Прохожий
 
Регистрация: 26.07.2010
Сообщения: 20
Репутация: 10
По умолчанию

Цитата:
Сообщение от DJ PhoeniX
Так и напиши -
Код:
  for i := 0 to TabSheet1.ComponentCount-1 do
    if TabSheet1.Components[i] is TEdit then
      for j := 63 to 100 do
        if (TabSheet1.Components[i] as TEdit).Name = 'Edit' + IntToStr(j) then
          (TabSheet1.Components[i] as TEdit).Color := clRed;
Или как-то таким же раком... не помню точно...

Если я правильно понял то вместо:
Код:
Form1.Edit63.color:=clRed;
...
Form1.Edit100.color:=clRed;
т.е. если всё писать вручную получается 37 действий, а если задавать таким поиском компонентов то он будет перебирать все компоненты (не только edit), сравнивать их с Edit, если его найдёт делать в цикле for 37 прогонов, чтобы присвоить нужному Edit значение, причём если найденный Edit не входит в диапазон 63-100, то получиться 63*37 прогонов со сравнением впустую... хм.. плюс 37*36 прогонов в пустую, если edit входит в диапазон 63-100, и того 3663 лишних действия + проверка НеEdit. хм...
Видимо лучше всё таки прописывать каждый элемент вручную...(((

Если я всё правильно понимаю, то по сути задача присвоения значений в цикле группе одинаковых элементов должна сводится к значительному уменьшению объёма кода, а не к увеличению количества действий...

Цитата:
Сообщение от dr. F.I.N.
Код:
procedure SetTextToEditByName(EditName, NewText: String);
var
  e: TEdit;
begin
  e := FindComponent(EditName);
  if e <> nil then e.Text := NewText;
end;

Примерно так (по имени).
Доработать для твоей заачи - 2 минуты (добавить цикл и что там еще).

Здесь можно по подробнее?
я понял что должно быть примерно так:
Код:
var
  e: TEdit;

begin
  For i:=63 to 100 do
  begin
  e := FindComponent(Edit+i); 
  if e <> nil then e.Text := NewText;
  end;
end;
Делфи при таком варианте пишет "несовместимые типы TEdit и TComponent (или Tstring)" забыл уже точно
Ответить с цитированием