| 
| 
 | Вопрос # 3 005/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!не раз мне уже помогали) опять попал в тупик...
 
 имеется компонент Edit1, который создается динамически во время работы программы. Все хорошо, но вот проблема в том, что с ним необходимо работать, НО как с ним работать если его не существует... по сути от него требуется только принять текст в переменную... естественно это сделать не позволяется...
 
 спасибо за внимание...
 Примечание #1 (17 июля 2009, 14:52): with edit_ do beginedit_:=TEdit.Create(Self);
 name:='name'+inttostr(PageControl1.PageCount);
 left:=140;
 top:= 30;
 parent:=PageControl1.Pages[pageControl1.pageCount-1];
 end;
 
 
|  |   Вопрос задал: rod13 (статус: Посетитель)Вопрос отправлен: 17 июля 2009, 14:39
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: min@y™ Надо объявить edit_ полем формы:
 type
  TFrom1 = class(TForm)
    //...
    procedure FormCreate(Sender: TObject);
  public
    edit_: TEdit;
  end;
 
implementation
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  edit_:= TEdit.Create(Self);
  with edit_ do
    begin
      name:= 'Edit' + inttostr(PageControl1.PageCount);
      parent:= PageControl1.Pages[pageControl1.pageCount-1];
      left:=140;
      top:= 30;
    end;
end;После создания формы к нему можно обращаться внутри методов формы: S:= edit_.Text; извне: S:= Form1.edit_.Text;.
 
|  | Ответ отправил: min@y™ (статус: Доктор наук)Время отправки: 17 июля 2009, 15:08
 
 |  
 Мини-форум вопросаВсего сообщений: 10; последнее сообщение — 17 июля 2009, 15:31; участников в обсуждении: 4. 
|   | rod13 (статус: Посетитель), 17 июля 2009, 14:54 [#1]:вот кусок программы, который создает динамически компонент... как к нему обратиться, понять не могу!
 |  
|   | rod13 (статус: Посетитель), 17 июля 2009, 14:57 [#3]:по имени нельзя, компонента еще не существует...он создается во время выполнения программы |  
|   | Вадим К (статус: Академик), 17 июля 2009, 14:58 [#4]:"НО как с ним работать если его не существует" как это не сущестувует? а кто его создал? Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Вадим К (статус: Академик), 17 июля 2009, 15:02 [#5]:А кто переменную для него создал? вот её и используйте. А имя... можно и без имени жить. всё работает. Ну почти всё.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Лед и Пламень (статус: 1-ый класс), 17 июля 2009, 15:03 [#6]:edit_:=TEdit.Create(Self); - ТЫ ЕГО СОЗДАЛ. ОН СУЩЕСТВУЕТ ТЕПЕРЬ name:=\'name\'+inttostr(PageControl1.PageCount); - ТУТ ТЫ ЕМУ ИМЯ ДАЛ
 |  
|   | rod13 (статус: Посетитель), 17 июля 2009, 15:12 [#7]:чет не пойму...может я не догоняю... смотрим дальше
 
 " тут идет создание компонента
 получается переменная с именем name1"
 
 a:=name1.text
 
 в итоге ошибка  name1 переменная не объявлена...
 при попытке объявить ее происходить ошибка, я так понимаю изза того что 2 переменных с одинаковым именем...
 |  
|   | Лед и Пламень (статус: 1-ый класс), 17 июля 2009, 15:24 [#8]:var E:Tedit; begin
 e:=Tedit.Create(self); //создаем
 e.Name:='name1';   //если хочешь имя
 e.Text:='rrr';      // обращаемся
 end;
 |  
|   | min@y™ (статус: Доктор наук), 17 июля 2009, 15:26 [#9]:Да вычо?! Имя компонента и имя переменной - ЭТО НЕ ОДНО И ТО ЖЕ! Имя компонента - это его СВОЙСТВО property Name: TComponentName read ... write ...;, а переменная - это, блин, УКАЗАТЕЛЬ на экземпляр класса! Просто, когда компонент создаётся в design-time, ему даётся имя, совпадающее с именем переменной-указателя в разделе published формы и DFM-файле. 
 Ну вы, блин, даёте!...
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Лед и Пламень (статус: 1-ый класс), 17 июля 2009, 15:31 [#10]:В твоем слечае a:=Edit_.text
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |