Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как скопировать контрол в другой parent?


Asail ©   (2006-06-01 19:21:00) 

Здрасте!
Задача такая: есть две панели pnl1 и pnl2. На pnl1 лежит btn1 (TButton).
Нужно создать точно такую-же кнопку btn2 (со всеми свойствами) на pnl2.
Пытаюсь так:

btn2:=TButton.Create(pnl2);
btn2.Assign(btn1);
btn2.Parent:=pnl2;

Ругается на Assign - дескать, не могу скопировать TButton в TButton.
Что-то не то делаю, а как решить сию задачу что-то не врублюсь.


Asail   (2006-06-02 16:15:00) [1]


> PZ   (02.06.06 15:55) [6]
> Runtime в вопросе не значится

Не надо придираться к словам. ИМХО, из вопроса вполне понятно, что речь идет о runtime...


Asail   (2006-06-02 16:13:00) [2]

AssignTo, вроде, перекрыт в TWinControl... Тогда почему не срабатывает приведение типа (как явное, так и неявное)? Т.е.:
(btn AS TWinControl).Assign(Button1 AS TWinControl);
или
TWinControl(btn).Assign(TWinControl(Button1));


Сергей М.   (2006-06-02 15:56:00) [3]


> Asail   (01.06.06 19:21)


Метод Assign() в ходе выполнения вызывает вирт.метод AssignTo(), который д.б. перекрыт конкретным наследником TPersistent.


PZ   (2006-06-02 15:55:00) [4]

Runtime в вопросе не значится


Asail   (2006-06-02 15:35:00) [5]


> А Ctrl-C, Ctrl-V разве нельзя использовать?

Это как? В runtime?


PZ   (2006-06-02 05:59:00) [6]

А Ctrl-C, Ctrl-V разве нельзя использовать?


Rial   (2006-06-01 20:51:00) [7]

Ну, может быть и есть. Не знаю.
Но тебе не все же копировать надо(только некоторые), а Assign-ить потомки WinControl-ов проблематично. Их ведь не сохранишь так просто.
Постарайся выйти из ситуации другим путем. Не копируй, а создай динамически сколько и где тебе их надо, и все.


Asail   (2006-06-01 19:35:00) [8]


> Ну переприсвой все поля вручную ....

Круто, однако... Мне, в реальности, надо не только TButton копировать, но и еще TEdit, TDBGrid, TListBox и т.д. и т.п. Так-что, вручную запарюсь :-(.
Что, нет более красивого способа? Вроде, Assign должна помочь (согласно хелпу)... Но, как сей метод пользовать - не врублюсь :-(


Rial   (2006-06-01 19:29:00) [9]

Ну переприсвой все поля вручную ....
btn2.Caption:=btn1.Caption;
btn1.OnClick:=btn1.OnClick;
...
btn2.Parent:=pnl2;


Наверх

Титульная страница Поиск, карта сайта Написать письмо