|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.11.2007, 15:28 | #1 |
Регистрация: 06.11.2007
Сообщений: 8
|
Управление Программно созданными объектами
Добрый день уважаемые Гуру.
столкнулся с проблемой у меня кусок кода создает программно объекты типа TEdit Код:
////////////////////////////////////////////////////////////////////////////// Для того, чтобы переместить какой-нибудь компонент (визуальный конечно же) нам необходимо послать компоненту соответствующее сообщение, с помощью метода Perform. Это делается примерно так: ReleaseCapture; edit1.Perform(WM_SYSCOMMAND, $F012, 0); Все это надо записать в обработчик события OnMouseDown для нужного компонента, в данном случае это TEdit. И тогда при нажатии на компонент на экране появится контур компонента, когда вы выберите подходящее место и отпустите кнопку, компонент переместится туда! Вот такой простой и красивый способ! //////////////////////////////////////////////////////////////////////////// но этод способ описан к фексированно установленному компоненту. как это можно связать этот метод с мои кодом? и как например в созданый объект Edit внести текст. большое спасибо за любые отклики. Используйте тег СODE для оформления листингов - кнопка #. Модератор Последний раз редактировалось AlDelta; 06.11.2007 в 17:27. |
06.11.2007, 15:45 | #2 |
Участник клуба
Регистрация: 07.07.2007
Сообщений: 1,518
|
var NewEdit: TEdit;
NewEdit.create(self);... и т.д. NewEdit.OnMouseDown := OldEdit.OnMouseDown; Событие OnMouseDown для OldEdit должно существовать. |
07.11.2007, 02:08 | #3 | |
Регистрация: 06.11.2007
Сообщений: 8
|
Цитата:
А то у меня пишет OldEdit не декларирована. и в справке не нашел что это за вещь. |
|
07.11.2007, 08:37 | #4 | |
Павел Сергеевич
Форумчанин
Регистрация: 05.11.2006
Сообщений: 665
|
Цитата:
OldEdit - какой-то другой Edit, его по сути может и не быть, а вот событие OnMouseDown должено соответствовать методу OnMouseDown класса TEdit.
Познавая других, мы познаем себя.
С'est la vie... |
|
07.11.2007, 12:04 | #5 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Попробую совсем просто объяснить.
Киньте на форму TEdit и задайте ему имя OldEdit. Теперь в том же инспекторе объектов переключитесь на вкладку событий и задайте обработчик события OldEdit.OnMouseDown, т.е. впишите туда Код:
Обратите внимание на параметр (Sender as TEdit). Он означает, что этот обработчик вы можете назначить любому созданному TEdit-у, независимо от того, какое имя вы ему дали, поскольку обращение производится по имени класса. |
07.11.2007, 14:42 | #6 | |
Регистрация: 06.11.2007
Сообщений: 8
|
Цитата:
А подскажите пожалуйста. если я создаю события для реально установленного компонента на форме, то я могу переприсваивать их к динамически созданным в процессе выполнения программы. Достаточно просто сделать их невидимыми чтобы не путались под ногами? и еще вопрос, Если не сильно надоел , можно ли как то отследить у динамических обьектов на ком из них был выполнен клик мышью? тоесть например три MyEdit созданные программно. нужно что бы текст менял цвет в том объекте на котором я кликну мышью. если это конечно реально. Спасибо всем. ВЕК ЖИВИ И ВЕК УЧИСЬ!!! |
|
07.11.2007, 15:45 | #7 | ||
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Цитата:
Цитата:
Например: Код:
|
||
08.11.2007, 05:04 | #8 | |
Регистрация: 06.11.2007
Сообщений: 8
|
Цитата:
которые создает программа, через условие If и реальное имя MyEdit1,MyEdit2,....... а как нибудь это зациклить можно? или это единственный способ? Большое спасибо всем за совместные обьяснения. |
|
08.11.2007, 07:52 | #9 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
По теме, перебрать все эдиты на форме мона так: for i:=0 to componentcount-1 do if components[i] is Tedit then <Это Эдит>
I'm learning to live...
|
|
08.11.2007, 08:04 | #10 |
Павел Сергеевич
Форумчанин
Регистрация: 05.11.2006
Сообщений: 665
|
А можно перебор осуществить и по-другому:
Код:
Познавая других, мы познаем себя.
С'est la vie... |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с классами и объектами | Shavminator | Общие вопросы Delphi | 7 | 18.12.2009 04:11 |
Как заполнить форму 6-иугольными объектами | DeKot | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 3 | 26.08.2008 21:59 |
Взаимодействие ListView с рукописными объектами. | Turbine | Общие вопросы Delphi | 1 | 15.08.2008 11:27 |
Взаимодействие ListView с другими объектами. Передача | Turbine | Компоненты Delphi | 0 | 13.08.2008 22:40 |
Управление TChar программно | Sanprof | Общие вопросы Delphi | 5 | 18.02.2008 20:06 |