ПРОГРАММИРОВАНИЕ! СОЗДАНИЕ САЙТОВ И ИХ ОПТИМИЗАЦИЯ
Главная » Статьи » Программирование » Delphi |
Дублирование компонентов и их потомков во время выполнения приложения Приведенный ниже код содержит функцию DuplicateComponents, позволяющую проводить клонирование любых компонентов и их потомков во время выполнения приложения. Действия ее напоминают операцию копирования/вставки (copy/paste) во время разработки приложения. Новые компоненты при создании получают тех же родителей, владельцев (в случае применения контейнеров) и имена (естественно, несколько отличающихся), что и оригиналы. В данной функции есть вероятность багов, но я пока их не обнаружил. Ошибки и недочеты могут возникнуть из-за редко применяемых специфических методов, которые, вместе с тем, могут помочь программистам, столкнувшимися с аналогичными проблемами. Данная функция может оказаться весьма полезной в случае наличия нескольких одинаковых областей на форме с необходимостью синхронизации изменений в течение некоторого промежутка времени. Процедура создания дубликата проста до безобразия: разместите на TPanel или на другом родительском компоненте необходимые элементы управления и сделайте: "newpanel := DuplicateComponents(designedpanel)". SysUtils, Windows, Messages, Classes, Graphics, Controls, type TUniqueReader = Class(TReader) implementation procedure TUniqueReader.ComponentRead( Component: TComponent LastRead := Component; procedure TUniqueReader.SetNameUnique( // Задаем уникальное имя считываемому компоненту Reader: TReader; i: Integer; i := 0; function DuplicateComponents( AComponent: TComponent // исходный компонент procedure RegisterComponentClasses( RegisterComponentClasses(TWinControl(AComponent).Controls[i]); end; var Stream: TMemoryStream; result := nil; try try Stream.Position := 0; if AComponent is TWinControl then UniqueReader.ReadComponents( TWinControl(AComponent).Owner, UniqueReader.ReadComponents( AComponent.Owner, | |
Просмотров: 288 | Комментарии: 1 | Рейтинг: 0.0/0 |
Всего комментариев: 1 | ||
| ||