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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2008, 23:15   #1
Arassir
Форумчанин
 
Аватар для Arassir
 
Регистрация: 23.10.2008
Сообщений: 230
По умолчанию Как обратиться к объекту который был только что создан

Как обратиться к объекту который был только что создан.

Я создал программно компонент edit.
В последствие я хочу чтобы в зависимости от числа в этом поле совершалось определенное действие при нажатии на кнопку.

Если пишу в обработчике события "нажатие на кнопку" название созданного поля edit1 пишется ошибка.
Arassir вне форума Ответить с цитированием
Старый 24.10.2008, 00:03   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Если пишу в обработчике события "нажатие на кнопку" название созданного поля edit1 пишется ошибка.
Приведите код обработчика и тот кусок кода, гда вы создавали Edit1.

Последний раз редактировалось mihali4; 24.10.2008 в 00:06.
mihali4 вне форума Ответить с цитированием
Старый 24.10.2008, 13:00   #3
Arassir
Форумчанин
 
Аватар для Arassir
 
Регистрация: 23.10.2008
Сообщений: 230
По умолчанию

{код создания поля ввода на форме}
var edit:Tedit;
begin
edit := tedit.Create(form1);
edit.Parent := form1;
edit.Left:=50;
edit.Width:=50;
edit.Top :=30;
edit.Visible := true;
edit.Name := 'Edit'+inttostr(1);
end;


{Обатиться к созданному объекту я не могу, т.к. для программы пока он не создан он не существует.А пока он не создан он не прописан в качестве переменной в форме}

procedure TForm1.Button1Click(Sender: TObject);
edit1.text:='slovo';


Как быть?
Arassir вне форума Ответить с цитированием
Старый 24.10.2008, 13:31   #4
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Здесь edit.Name := 'Edit'+inttostr(1); работать не будет. Обращаться к такому компоненту нужно не по имени, а по индексу.
Принцип такой:
Код:
var e : array [1..10] of TEdit;
begin
 e[1] := tedit.Create(form1);
 e[1].Parent := form1;
 e[1].Left:=50;
 e[1].Width:=50;
 e[1].Top :=30;
 e[1].Visible := true;
 e[1].Text:= 'ку-ку';
end;
Еще можно записать, например, в Tag какое-то значение и по нему находить нужный компонент.

При выходе не забудь очистить память.
e[1].Free;
_SERGEYX_ вне форума Ответить с цитированием
Старый 24.10.2008, 14:01   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
{Обатиться к созданному объекту я не могу, т.к. для программы пока он не создан он не существует.А пока он не создан он не прописан в качестве переменной в форме}
procedure TForm1.Button1Click(Sender: TObject);
edit1.text:='slovo';

Как быть?
А, вот в чем дело... Ну, это просто:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var mycomp: TComponent;
begin
mycomp:=FindComponent('Edit1');
if mycomp<>nil then
(mycomp as TEdit).Text:='slovo';
end;
mihali4 вне форума Ответить с цитированием
Старый 24.10.2008, 20:42   #6
Arassir
Форумчанин
 
Аватар для Arassir
 
Регистрация: 23.10.2008
Сообщений: 230
По умолчанию

Mihali4
Большое спасибо, то что надо.
Arassir вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С помощью какого языка был создан windows? Pilmaks Свободное общение 20 24.10.2008 11:18
Как объекту рисования (овал) присвоить значение? Град Microsoft Office Excel 8 17.07.2008 10:42
Как получить полный путь к файлу, который был послан на принтер? Stilet Общие вопросы Delphi 7 29.02.2008 17:49
Как сделать что-бы Таймер срабатывал только один раз? Greg Компоненты Delphi 11 16.12.2006 01:25
что лучше использовать для создан элементов управл. программой? Alar Общие вопросы Delphi 0 29.10.2006 20:33