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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2011, 18:51   #1
Игорь Кулакевич
Пользователь
 
Регистрация: 26.09.2011
Сообщений: 17
По умолчанию заполнение edit ,ранее созданных динамически

Код:
edit_C:TEdit;  
label_C:TLabel;
i,ii,ns,nst,k:integer;
s1,s2,st:string;
begin
for i := 1 to strtoint(edit25.text) do begin
edit_c:=tedit.Create(owner);
  edit_c.Top:=i*25;
  edit_c.Left:=40;
  edit_c.Width:=80;
  edit_c.Name:='edit_c1_'+inttostr(i);
  edit_c.Text:=edit_c.Name;
  form2.GroupBox22.insertControl(edit_c);
end;
создаю таким образом на форме некоторое кол-во edit. тут все нормально.
далее в определенные момент мне нужно заполнить эти массив из файла и дублировать каждое значение массива в созданный эдит.
Код:
SetLength(C1,ns);
k:=19 ;
for i:=1 to ns do begin
s:=BFile.Strings[k];
  C1[i]:=strtofloat(s[50]+s[51]+s[52]+','+s[54]);

  k:=k+1;
end;
как мне обратиться к созданным edit в том же цикле что и создание массива.?
заранее спасибо за любые ответы.

Последний раз редактировалось Stilet; 30.10.2011 в 19:02.
Игорь Кулакевич вне форума Ответить с цитированием
Старый 30.10.2011, 19:05   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Как вариант:
Код:
Var e:Tedit;
...
 e:=form2.GroupBox22.FindComponent('edit_c1_'+inttostr(i));
 if e<>nil then e.Text:=Чему-то
...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.10.2011, 19:14   #3
Игорь Кулакевич
Пользователь
 
Регистрация: 26.09.2011
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Как вариант:
Код:
Var e:Tedit;
...
 e:=form2.GroupBox22.FindComponent('edit_c1_'+inttostr(i));
 if e<>nil then e.Text:=Чему-то
...
[DCC Error] Unit2.pas(864): E2010 Incompatible types: 'TEdit' and 'TComponent'
несовместимость типов..хм
Игорь Кулакевич вне форума Ответить с цитированием
Старый 30.10.2011, 19:31   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
несовместимость типов
Показывай код
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.10.2011, 19:34   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

нормальная ошибка:
Код:
Var e:Tedit;
...
 e:=form2.GroupBox22.FindComponent('edit_c1_'+inttostr(i)) as TEdit;
 if e<>nil then e.Text:=Чему-то
...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.10.2011, 23:36   #6
Игорь Кулакевич
Пользователь
 
Регистрация: 26.09.2011
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Показывай код
тот код, что мне написали и вызывает эту ошибку. без него все ок.
Игорь Кулакевич вне форума Ответить с цитированием
Старый 30.10.2011, 23:37   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну тогда последуй совету Пепла Феникса )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.10.2011, 23:52   #8
Игорь Кулакевич
Пользователь
 
Регистрация: 26.09.2011
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
нормальная ошибка:
Код:
Var e:Tedit;
...
 e:=form2.GroupBox22.FindComponent('edit_c1_'+inttostr(i)) as TEdit;
 if e<>nil then e.Text:=Чему-то
...
это вообще результата не дало. и ошибок тоже не вызвало.
Игорь Кулакевич вне форума Ответить с цитированием
Старый 31.10.2011, 09:41   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Код:
edit_c:=tedit.Create(owner);
Код:
 e:=form2.GroupBox22.FindComponent('edit_c1_'+inttostr(i)) as TEdit;
чтобы найти form2.GroupBox22 и Owner это должен быть один и тот же объект.

учитывая
Цитата:
Код:
 form2.GroupBox22.insertControl(edit_c);
возможно лучше применить FindChildControl
Код:
e:=form2.GroupBox22.FindСhildControl('edit_c1_'+inttostr(i)) as TEdit;
кроме того в справке Insertcontrol
Цитата:
Applications should not need to call InsertControl directly.
а в примере Delphi Example)на эту функцию
Цитата:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  RemoveControl(Button1);
  GroupBox1.InsertControl(Button1);
end;
Note that it was necessary to remove the button from the Controls property of the form before the button actually moves into the group box.

This code accomplishes the same thing:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Parent := GroupBox1;
end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 31.10.2011 в 09:53.
evg_m вне форума Ответить с цитированием
Старый 31.10.2011, 11:30   #10
Игорь Кулакевич
Пользователь
 
Регистрация: 26.09.2011
Сообщений: 17
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
чтобы найти form2.GroupBox22 и Owner это должен быть один и тот же объект.

учитывая
возможно лучше применить FindChildControl
Код:
e:=form2.GroupBox22.FindСhildControl('edit_c1_'+inttostr(i)) as TEdit;
кроме того в справке Insertcontrol
а в примере Delphi Example)на эту функцию
FindChildControl - то что нужно. заработало)
спасибо всем большое.
Игорь Кулакевич вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перетаскивание динамически созданных объектов kaizer131 Общие вопросы Delphi 13 15.06.2011 07:59
Сохранение динамически созданных объектов Marsel737 Общие вопросы Delphi 25 15.12.2009 14:24
Свойства динамически созданных объектов. Dorithur Общие вопросы Delphi 4 12.12.2009 15:35
Как с помощью классов(созданных ранее) в делфи сделать вывод информации из текстового документа PRIVIDENIE18 Помощь студентам 1 25.05.2009 12:04
Как поднять на верх динамически созданное ранее окно? John_chek Общие вопросы Delphi 9 28.04.2009 17:45