Delphi – дублирование tpanel и tbuttons во второй форме

StackOverflow https://stackoverflow.com/questions/2210999

  •  18-09-2019
  •  | 
  •  

Вопрос

В моей основной форме есть TPanel, содержащий кнопки, которые действуют как панель инструментов.Я хочу клонировать/скопировать эту панель инструментов, кнопки и их функциональность во вторую форму.

Клонировать меню было просто с помощью newmenu.merge(mainmenu).Это был отличный способ дублировать Tmainmenu.

Но я не знаю, как легко дублировать мою панель инструментов без необходимости вручную назначать события и хранить таймер для сравнения и отслеживания того, какие кнопки включены и отключены по сравнению с реальным главным меню в главной форме.В зависимости от того, что делает приложение, кнопки основной панели инструментов могут включаться и отключаться в разное время.

Есть идеи?Спасибо за любые предложения или советы, которые помогут сделать это проще.

Это было полезно?

Решение

  • Дублирование элементов управления

    В конструкторе форм выберите панель и нажмите Ctrl+С скопировать его и все его дочерние элементы в буфер обмена.Перейдите во вторую форму и нажмите Ctrl+V вставить.

    Если вы все еще работаете над дизайном и хотите, чтобы обе формы были одинаковыми, создайте TFrame и создайте там макет панели инструментов.Затем поместите экземпляр этого фрейма в обе формы.Изменения в дизайне рамок отразятся на формах.

    Видеть Работа с фреймами в помощи.

  • Убедитесь, что оба набора кнопок включены последовательно.

    Создайте модуль данных.Поставьте TActionList в теме.Добавьте к нему действие для каждой кнопки главной формы.Назначьте обработчики событий действиям. OnUpdate события.В них установите действия' Enabled характеристики.Наконец, назначьте каждую кнопку Action свойство для ссылки на соответствующий объект действия.Кнопки будут автоматически включить и отключить с помощью действий.Таймер не требуется.

    Кроме того, вы можете обрабатывать действия OnExecute события тоже.Очистите каждую кнопку OnClick свойство, а затем переместите кнопку OnClick код в соответствующее действие OnExecute обработчик.Он будет автоматически вызван при нажатии кнопки, даже если OnClick недвижимость пуста.

    Когда вы назначаете Caption или Hint собственность TAction, соответствующие свойства любых связанных элементов управления также изменяются.Аналогично и с изображениями, если элемент управления их поддерживает.Действия также можно назначить пунктам меню.

    Видеть Использование списков действий в помощи.

  • Работаем как панель инструментов

    Просто используйте TToolbar.Вот для чего это нужно.

    Или, когда вы привыкнете к действиям, поставьте TActionManager в своем проекте и используйте его с TActionToolbar и TActionMainMenuBar.Видеть Организация действий для панелей инструментов и меню. в помощи.

Другие советы

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

Если вы пойдете по этому пути, чтобы перейти к использованию ActionList, рассмотрите возможность размещения ActionList в модуле данных, где на него могут ссылаться различные модули и формы.

Вы можете использовать объект ClipBoard для копирования панели.

Буфер обмена.SetComponent(Panel1);
Буфер обмена.GetComponent(Form2,GroupBox1);

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top