копирование компонента на лету в mse

Вопросы программирования и использования MSEide + MSEgui.

Модератор: Модераторы

копирование компонента на лету в mse

Сообщение minoshi » 22.09.2009 07:44:02

Доброго времени суток!

Возник вот такой вопрос, можно ли скопировать компонент при выполнении программы?
имеем flv0 : tfilelistview, который расположен на tabpage0, нужно создать полную его копию при нажатии клавиши на вкладке tabpage1

я попробывал вот так:
Код: Выделить всё
var
  flv : tfilelistview;

begin
   flv := tfilelistview.create(self);
   flv := flv0;
   flv.name := 'flv1';
   flv.parentwidget := tabpage1;


компонент на вкладке 1 появился, но на вкладке 0 исчез (я так понял, что он не скопировался, а переносся).
Аватара пользователя
minoshi
постоялец
 
Сообщения: 279
Зарегистрирован: 17.05.2008 21:23:38

Re: копирование компонента на лету в mse

Сообщение Attid » 22.09.2009 12:05:15

нельзя.

надо создать новый и настроить его также как первый.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: копирование компонента на лету в mse

Сообщение minoshi » 22.09.2009 13:50:53

либо создавать через .create(self)
и копировать все свойства

печально, столько "лишних" строк ...
Аватара пользователя
minoshi
постоялец
 
Сообщения: 279
Зарегистрирован: 17.05.2008 21:23:38

Re: копирование компонента на лету в mse

Сообщение Attid » 22.09.2009 16:39:24

Use copycomponent() procedure.

Martin
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: копирование компонента на лету в mse

Сообщение minoshi » 22.09.2009 22:51:14

это не процедура, а функция

где-то так ...
Код: Выделить всё
uses ... mseclasses;
...
procedure tmainfo.copy_component(const sender: TObject);
var b : tbutton;
begin
b := tbutton.create(self);
b := copycomponent(tbutton2,nil,nil,nil,nil,nil) as tbutton;
with b do
   begin
    name := 'sss';
    caption := 'new';
    bounds_y := 70;
    parentwidget := mainfo;
   end;
end;

работает, однако.
свойство name менять в обязательном порядке, иначе нарветесь на ошибку "dublicate name"

Добавлено спустя 6 минут 30 секунд:
p.s. осталось сообразить, как все это прикрутить к своей программе :-\
Аватара пользователя
minoshi
постоялец
 
Сообщения: 279
Зарегистрирован: 17.05.2008 21:23:38


Вернуться в MSEide + MSEgui

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru