2013-06-06 4 views
1

Delphi-версия5. У меня есть приложение сравнения файлов, которое я собираю, и у него есть левая и правая панель в основной форме. Каждая панель (pnlLeft и pnlRight) имеет идентичный диапазон элементов управления и событий, разделенных только именем. т.е. btnCheckLeft (... и btnCheckRight (... и у меня проблемы с синхронизацией изменений кода между двумя панелями.)Скопируйте TPanel и все его элементы управления во время выполнения

Мне интересно, могу ли я создать отдельную панель (на отдельной форме) со всеми элементы управления и события, а затем во время выполнения, скопируйте его дважды, один раз для pnlLeft, другой - pnlRight для основной формы. В этой единственной форме я могу управлять кодировкой только один раз, а не пытаться дублировать все.

во время процесса установки Align и имен событий, чтобы применить к каждой копии, как в ...

Первый экземпляр на пустую основную форму ...

pnlLeft.Align:=alLeft; 
pnlLeft.Button1Click(Sender)... 

второй экземпляр

pnlRight.Align:=alLeft; 
pnlRight.Button1Click(Sender)... 

Как или это возможно? Я думаю, что мне нужен компонент полной панели, но я недостаточно подготовлен, чтобы создать компонент этой сложности.

Я проверил этот how to copy all the TLabels parented with a TPanel on delphi to another TPanel?

и этот Duplicating components at Run-Time

, но не думаю, что либо будет делать то, что мне нужно.

Спасибо за все, с чем вы можете помочь.

ответ

6

Решение проблемы не в дублирование контроль во время выполнения. Вместо этого создайте объект TFrame. Поместите весь свой конкретный код на панель, включая любые элементы управления, в которых он нуждается. Затем просто создайте экземпляр дважды и дайте каждому другое имя. Затем вы можете обратиться к LeftPanel.btnCheck и RightPanel.btnCheck.

+0

Спасибо, но я думаю, я объяснил это плохо, я попытаюсь написать лучшее объяснение и повторное опубликование. – user2445336

+1

Действительно? Описанная вами проблема * точно * решена с помощью фреймов. Определите один кадр во время разработки, а затем оставьте два экземпляра в своей форме. Когда вы хотите внести изменения, измените определение фрейма. Изменения будут автоматически передаваться в * оба * кадра уже в вашей форме. –

Смежные вопросы