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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2010, 14:22   #1
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию findcomponent и tedit

Код:
 i:=1;
 showmessage(TEdit(FindComponent('my_edit'+inttostr(i))).Text);
Хочу чтобы в маленьком окошке (showmessage) высвечивался текст который в моем компоненте (tedit)(компонент создан через код)
Что не так я делаю? (высв. окошко без текста) Вариант типа showmessage(my_edit1.text); не предлогать
zotox вне форума Ответить с цитированием
Старый 16.03.2010, 14:28   #2
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

А можно код создания Edit`ов посмотреть ...
Судя по всему my_edit плюс номер - не верное имя контролов ...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 16.03.2010, 14:31   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Что не так я делаю?
Во-первых: А ты уверен что в этом Эдите есть текст?
Во-вторых: Что ты будешь делать если такого Эдита нет? Вылезет ошибка, поэтому сначала получай результат работы FindComponent в некую переменную, проверяй ее на nil и если она не nil то уже работай с этой переменной.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.03.2010, 14:37   #4
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Цитата:
Сообщение от Kotofff Посмотреть сообщение
А можно код создания Edit`ов посмотреть ...
Судя по всему my_edit плюс номер - не верное имя контролов ...
Код:
 my_edit1:=TEdit.Create(TabSheet1);
 my_edit1.Parent:=TabSheet1;
 my_edit1.Top:=28;
 my_edit1.Left:=5;
 my_edit1.Width:=137;
 my_edit1.Height:=21;
 my_edit1.Visible:=true;
 my_edit1.Text:='hello world';
 //Все прекрасно создается и отображается
Stilet, да я уверен что текст в edit'е есть

Проверил сейчас что возр. findcomponent:

Код:
if FindComponent('my_edit1')<>nil then showmessage('ok');
my_edit1 - не улавливает, почему не улавливает - мне не понятно
zotox вне форума Ответить с цитированием
Старый 16.03.2010, 14:39   #5
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Код:
my_edit1.name:='my_edit1';
ибо findcomponent ищет по значению свойства name.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 16.03.2010, 15:02   #6
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Цитата:
ибо findcomponent ищет по значению свойства name.
Все так же (т.е. findcomponent возр. nil)
zotox вне форума Ответить с цитированием
Старый 16.03.2010, 15:17   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

zotox
либо родителя (parent) делайте форму,
либо ищите компонент ТАМ, где Вы его создали (в TbaSheet1)!
Код:
var
  Form1: TForm1;
  my_edit1 : TEdit;

implementation

{$R *.DFM}

procedure TForm1.btCreateMyEditClick(Sender: TObject);
begin
 if Assigned(my_edit1) then Exit;
 my_edit1:=TEdit.Create(TabSheet1);
 my_edit1.Parent:=TabSheet1;
 my_edit1.Top:=28;
 my_edit1.Left:=5;
 my_edit1.Width:=137;
 my_edit1.Height:=21;
 my_edit1.Visible:=true;
 my_edit1.Text:='hello world';
 my_edit1.name:='MY_EDIT1';
end;

procedure TForm1.btFindMyEditClick(Sender: TObject);
var s : string;
begin
 if Assigned(TabSheet1.FindComponent('MY_EDIT1')) then
 begin
   s := (TabSheet1.FindComponent('MY_EDIT1') as TEdit).Text;
   Application.MessageBox(PChar('Found! Text in = "'+s+'"'),
                          'Сообщение', MB_OK)
 end
 else
   Application.MessageBox('Компонент не найден!', 'Ошибка', MB_ICONERROR or MB_OK);
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.03.2010, 15:23   #8
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Serge_Bliznykov, спасибо большое! программа заработала как надо!
zotox вне форума Ответить с цитированием
Старый 29.05.2010, 15:11   #9
one1991
Пользователь
 
Регистрация: 13.05.2010
Сообщений: 24
По умолчанию

Люди ошибку пишет не могу найти компонент, нужно сделать чтобы когда мой объект доходит до динамического определенного объекта - этот определенный объект изчезал или делал какое либо другое действие -(
Код:
var
i:integer;
begin
i:=strawtimer.Tag;
  img:=TRxGIFAnimator(FindComponent('straw'+inttostr(i)));
  if img.Width=medved.Left then
    begin
      showmessage('клубничка');
    end;
end;
one1991 вне форума Ответить с цитированием
Старый 29.05.2010, 16:23   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) прежде чем использовать найденный через FindComponent объект надо бы убедиться, что он нашёлся!

2) так может этого объекта банально нет или Parent у него другой (смотри пост #7) ?!

3) выкладывайте целиком исходники проекта. Посмотрим, что там не так...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FindComponent WOLFak Общие вопросы Delphi 9 07.07.2012 23:29
Динамическое создание и обращение через FindComponent Marsel737 Общие вопросы Delphi 3 10.03.2010 19:03
FindComponent StartMis Общие вопросы Delphi 3 15.12.2009 20:03
В чем я ошибся? FindComponent zotox Помощь студентам 5 29.09.2009 02:27
TEdit green Компоненты Delphi 17 16.03.2008 07:13