Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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

rod13 (статус: Посетитель), 17 июля 2009, 14:54 [#1]:

вот кусок программы, который создает динамически компонент...
как к нему обратиться, понять не могу!
Лед и Пламень

Лед и Пламень (статус: 1-ый класс), 17 июля 2009, 14:56 [#2]:

по имени
rod13

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

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™

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

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:55
Выполнено за 0.02 сек.