|
Вопрос # 3 005/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
не раз мне уже помогали) опять попал в тупик...
имеется компонент Edit1, который создается динамически во время работы программы. Все хорошо, но вот проблема в том, что с ним необходимо работать, НО как с ним работать если его не существует... по сути от него требуется только принять текст в переменную... естественно это сделать не позволяется...
спасибо за внимание...
Примечание #1 (17 июля 2009, 14:52): with edit_ do begin
edit_:=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
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|