Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 15.03.2008, 17:57
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Цитата:
Сообщение от Gad99
Просто помимо мет.материала сначало будет название темы, предмета ну и т.д.
Ну и что? Как это может помешать сразу присваивать Caption?
Цитата:
Сообщение от Gad99
l := TLabel(Text.FindComponent('MyLabel1'));
возвращает NIL
Проверяйте, чтобы имя при создании и имя при поиске совпадали и чтобы поиск происходил после создания.
Ответить с цитированием
  #17  
Старый 15.03.2008, 18:06
Gad99 Gad99 вне форума
Новичок
 
Регистрация: 21.02.2008
Адрес: мурманск
Сообщения: 72
Репутация: 10
По умолчанию

пробовал при создании явно указывать простейшее имя Test чтобы уж явно без ошибок, результат NIL
Ответить с цитированием
  #18  
Старый 15.03.2008, 18:10
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Ну показывайте весь код тогда снова.
Ответить с цитированием
  #19  
Старый 15.03.2008, 18:15
Gad99 Gad99 вне форума
Новичок
 
Регистрация: 21.02.2008
Адрес: мурманск
Сообщения: 72
Репутация: 10
По умолчанию

создаем, тут все нормально. Компонент появляется
Код:
procedure TForm1.CreateLabel(X : Integer);
var
  l : TLabel;
begin
  while X > 0 do begin
    l := TLabel.Create(Self);
    l.Name := 'test';
    l.Left := 50;
    l.Top  := X * 50;
    l.Parent := Text.Panel1;
    Dec(X);
  end;
end;
Возвращает NIL
Код:
CreateLabel(1);
  Text.Visible := true;
  l := TLabel(Text.FindComponent('test'));
  if l <> nil then begin
                   l.Caption := predmet;
                   l.Left := (Text.Panel1.Width - l.Width)Div 2;
                   end;
Ответить с цитированием
  #20  
Старый 15.03.2008, 18:33
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Код:
  while X > 0 do begin
    l := TLabel.Create(Text);
Ответить с цитированием
  #21  
Старый 15.03.2008, 18:38
Gad99 Gad99 вне форума
Новичок
 
Регистрация: 21.02.2008
Адрес: мурманск
Сообщения: 72
Репутация: 10
По умолчанию

есть, заработало. Я пока мало в этом понимаю но чтоб на будущее, что именно мы переделали ?
Ответить с цитированием
  #22  
Старый 15.03.2008, 18:47
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Create - это конструктор. В качестве параметра для большинства компонентов VCL ему передается указатель на владельца. Владелец отвечает за:
1) Освобождение памяти, распределенной под компоненты, которыми он владеет. Происходит это при уничтожении самого владельца;
2) Загрузку и сохранение компонентов. Когда в IDE вы создаете форму, а потом в программе обращаетесь к ней, именно владелец сохраняет и загружает компоненты на форме в том виде, в котором вы их создали.

Обычно владельцем выступает всегда форма. Здесь вы используете TFrame; на вышеуказанную функциональность не влияет, кто будет владельцем - форма или TFrame, но вот поиск компонента должен осуществлять его владелец. Т.е. вызывать нужно метод FindComponent того, кто указан внутри вызова Create(...)

Имеено это я и сделал - заменил владельца. А можно было убрать "Text." из вызова "Text.FindComponent", результат получился бы тот же.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:51.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter