Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Копировать контрол в рантайме 
V
    Опции темы
XperT
Дата 6.10.2010, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 19.8.2006

Репутация: 2
Всего: 4



Программа должна в рантайме создавать вкладки на которых находятся гриды класса TcxGrid. Трудность состоит в том, что я не знаю как создавать грид на основании уже существующего. Можно было бы конечно копировать все свойства грида по одному, но это очень муторный и долгий процесс. Есть ли способ скопировать контрол целиком назначив ему лишь другого родителя?
PM MAIL   Вверх
Akella
Дата 6.10.2010, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Посмотри здесь, оно, нет? http://www.devexpress.com/Support/Center/p/CQ62901.aspx

И ещё в справке
ms-help://borland.bds5/ExpressQuantumGrid6.BDS5/ExpressQuantumGrid6/IDH_Fundamentals_PatternCloneViews.htm

Ну ещё и так >>

http://coding.derkeiler.com/Archive/Delphi...04-01/0032.html

https://forums.codegear.com/thread.jspa?messageID=247631

Добавлено через 8 минут и 5 секунд
Сериализация объектов стандартными средствами Delphi

Это сообщение отредактировал(а) Akella - 6.10.2010, 22:12
PM MAIL   Вверх
okkonst
Дата 6.10.2010, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 5.9.2010
Где: Воронеж

Репутация: 1
Всего: 1



модуль typinfo. Там дофига интересных процедур. В частности, можно получить список имен всех published свойств (GetPropList) и в цикле скопировать их значения (по имени (текстовому) свойства) - GetPropValue - SetPropValue. Это называется "работа через RTTI" - Runtime Type Info

Добавлено через 4 минуты и 38 секунд
Кроме того, можно легко копировать компоненты заранее неизвестного класса. Для этого можно использовать замечательное свойство (или функцию - не смотрел) ClassType. Примерно так:
Код

type
  TControlClass=class of TControl;
var
  ctrl:TControl;
begin
    ctrl:=TControlClass(AnyControlForCopy.ClassType).Create(Self);
    ctrl.свойство:=значение;

PM MAIL   Вверх
XperT
Дата 6.10.2010, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 19.8.2006

Репутация: 2
Всего: 4



Всем спасибо, разобрался.
PM MAIL   Вверх
Xenag
Дата 7.10.2010, 02:55 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 51
Регистрация: 6.3.2010

Репутация: нет
Всего: нет



Может я чего-то не понял,
но для копирования свойств, существует метод Assign.
PM   Вверх
Akella
Дата 7.10.2010, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Ну да smile
Цитата


В общем случае, утверждение "Destination := Source" не идентично утверждению "Destination.Assign(Source)".

Утверждение "Destination := Source" принуждает Destination ссылаться на тот же объект, что и Source, а "Destination.Assign(Source)" копирует содержание объектных ссылок Source в объектные ссылки Destination.

Если Destination является свойством некоторого объекта (тем не менее, и свойство не является ссылкой на другой объект, как, например, свойство формы ActiveControl, или свойство DataSource элементов управления для работы с базами данных), тогда утверждение "Destination := Source" идентично утверждению "Destination.Assign(Source)". Это объясняет, почему LB.Items := MemStr работает, когда MemStr := LB.Items нет. 

ист: delphisources.ru


Просто "настоящие герои всегда идут в обход" (с) Бармалей  smile 
PM MAIL   Вверх
XperT
Дата 7.10.2010, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 19.8.2006

Репутация: 2
Всего: 4



Но но но, не нужно из меня дурачка делать. smile 
Если бы всё можно было решить обычным Assign - то я бы не стал заморачиваться, только у TcxGrid она не определена. И как оказалось в результате - клонирование как раз было менее затратным решением проблемы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0740 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.