2013-07-30 6 views
1

Введение:FireMonkey компонент ход во время выполнения

У меня есть пользовательский компонент VCL, полученный из класса TCustomPanel, целью которого является действовать как своего рода пользовательской формы, который имеет родителя (основная форма), но все кнопки по умолчанию таких как максимизация, минимизация, закрытие. Этот компонент был разработан задолго до FMX, и это важная часть существующего приложения. Компонент ловит сообщения, переопределяя метод Paint и т. Д.

Основная особенность этого компонента заключается в том, чтобы иметь аналогичную функциональность, как обычная форма (плавающая во время выполнения внутри родителя, перетаскивание ...), но с некоторыми настраиваемыми графиками (мелкие кнопки и т.д ...)

Demo application

Задача под рукой:

Я работаю на переписывание компоненты для FireMonkey (Delphi XE2), включая это плавающее окно, а если есть какая-либо точка, чтобы сделать что.
(я не хочу смешивать VCL и FMX, потому что в какой-то момент я хотел бы иметь все приложение в FMX.)

Вопросы:

  1. Есть ли существующий контроль FMX с особенностью плавающее/ перетаскивание/перемещение во время выполнения?

  2. Каков подход в Firemonkey для включения, например. Перемещение TPanel во время выполнения или есть элемент управления, который предлагает эту функцию по умолчанию: по умолчанию? Я думаю, что вся идея в FMX заключается в том, чтобы переопределить существующие методы .

  3. Возможно ли в том же приложении иметь формы с различными типами ? Я думаю о создании моей пользовательской формы с помощью пользовательского стиля . В этом случае у меня может быть одна основная форма (родительская) и дочерняя форма , которые имеют разные стили.

Спасибо!

+2

Не спрашивайте «Считаете ли вы ...» - вы получите низкую ставку или получите близкие голоса. Вместо этого попросите конкретные советы: «Как я могу ...», и если вас беспокоит мнение, попросите другие подходы, которые вы, возможно, пропустили. Я бы посоветовал также улучшить форматирование - например, составить список точек до трех коротких вопросов с одним предложением. Вот как пройти мимо SO гремлинов и сохранить интересный вопрос живым :) –

+0

Спасибо за совет. :) – Nix

+5

Советуете, если вы хотите что-то перенести в FMX, тогда вы не должны переносить его Firemonkey XE2 (1.0), тогда FMX был чем-то вроде альфа-сцены, а Суо многое изменилось в XE3 и XE4. – Peter

ответ

1

Для 1 и 2 событий OnMouseXXXX достаточно легко использовать себя (или защищенные виртуальные методы, если вы разрабатываете настраиваемый компонент).

Для 3, поместите TStyleBook в каждую форму и загрузите в него желаемый стиль (не забудьте установить свойство StyleBook формы). Вы также можете указать свойство StyleBook экземпляру не в форме, например. на другую форму или на глобальный объект. Если вы сделаете это, остерегайтесь использовать свойство StyleBook формы, прежде чем освобождать его, или вы получите AV-файлы.

+0

Я предполагаю, что я могу использовать только события OnMouseXXX для движущегося объекта, в то время как курсор мыши обычно остается внутри элемента управления.Для элемента управления размерами (где курсор мыши может находиться вне элемента управления), я предполагаю, что мне нужно переопределить событие OnMouseXXX своего родителя и сделать там некоторую кодировку? О книге стилей ... Если я делаю это в Delphi XE2, только содержимое формы оформляется в стиле, но не формирует элементы управления, такие как кнопки формы (максимизация, минимизация, закрытие ...), рамка, не клиентская область. Как это изменить? – Nix

+1

Дизайн неклиентской области доступен только с XE3 и далее. –

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