Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/40: Рейтинг темы: голосов - 40, средняя оценка - 4.93
_Radist_
6 / 6 / 7
Регистрация: 29.03.2010
Сообщений: 33
1

Обращение к объекту, созданному программно

07.05.2010, 08:38. Просмотров 8292. Ответов 2
Метки нет (Все метки)

Столкнулся с проблемой – создаю объект (Panel) при нажатии мышки. Мне необходимо его переместить, вот только не знаю как. Подскажите, пожалуйста, как обратиться к динамически созданному объекту. Заранее благодарен.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2010, 08:38
Ответы с готовыми решениями:

Центровать позицию экрана по созданному объекту
Доброго времени суток. Появился вопрос. У меня форма не помещается на экран целиком. Так и должно...

Как обратиться к динамически созданному объекту?
Всем привет, возникла проблема, пробую написать игру змейка, проблема при росте змейки, когда...

Присвоение процедуры к event динамически созданному объекту
Вопрос в следующем Имеется динамически создаваемая Panel'ка. Нужно присвоить(Events:Onmousemove)...

Обратиться к программно созданному Edit-у
Доброго времени суток. Подскажите, как обратиться к программно созданному едиту и веббраузеру на...

Работа с MainMenu. Как обратиться к программно созданному элементу меню?
Привет всем. задача следующая. на стартовой форме есть MainMenu с уже кое-каким меню(скажем...

2
_zz_
49 / 48 / 16
Регистрация: 12.03.2009
Сообщений: 133
07.05.2010, 11:34 2
Лучший ответ Сообщение было отмечено _Radist_ как решение

Решение

1) При динамическом создании компонента дать ему уникальное имя.
2) В дельфи есть ф-ция FindComponent(имя_компонента) которая возращает ссылку на компонент

пример использования: тебе нужно поменять значения Top и Left твоей панели

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  (*1-ый способ нужно изменить свойства компонета которые наследуются 
    от TComponent(это Top,Left,width,Heigth,Name и тд)*)
  FindComponent('имя_компонента').top := 100;
  FindComponent('имя_компонента').Heigth := 100;
  //или равносильный вариант
  with FindComponent('имя_компонента') do
  begin
    Top := 100;
    Left := 100;
  end;
 
  (*2-ой способ нужно изменить какие-то специфические свойства компонета*)
  if FindComponent('имя_компонента') is TPanel (* любой Класс Компонента*) then
    (FindComponent('имя_компонента') as TPanel).canvas.FillRect(Rect(0,0,10,10));
2
kukuruku310
199 / 186 / 26
Регистрация: 14.02.2010
Сообщений: 540
07.05.2010, 12:27 3
А зачем искать объект по имени? Не проще и быстрее присвоить его переменной и через нее обращаться? Ведь при статическом создании вы не обращаетесь к объектам по их имени, а, как правило, обращетесь к переменной. Просто там имя переменной вам назначает IDE на основании типа объекта, а здесь - вы вводите имя ручками в тексте программы - и вся разница.
Delphi
1
2
3
4
5
6
7
var
  myPanel: TPanel;
  myPanel := TPanel.Create(mainForm);
  myPanel.Left := x;
 
в конце использования
  myPanel.Free;
1
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2010, 12:27

Обращение к объекту родителю
Здравствуйте, у меня вот такая ситуация: Я создал два класса: type TClass1 = class ...

Обращение к объекту не по полю Name.
Ситуация такова: на форме есть шесть компонентов типа TShape(Shape1...Shape6). Как скопировать в...

Обращение к объекту не по индексу, а по имени
Не знаю как словами описать, лучше пример приведу: type TButtons = class ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.