Хотел бы поделиться опытом. Рассмотрим случай, когда вам необходимо использовать кастомное диалоговое окно с затемнением. Вроде вот такого:
Первое, что приходит в голову, это использование Rectangle’ов. Но такой подход показался мне очень сложным, и я нашёл другой способ (многие о нём уже знают) создания кастомного окна.
Сам способ:
Создаем вторую форму, и изменяем следующие свойства:
Поместим туда один TLayout, выставим свойство «Align» в значение «Center». И зададим нужный размер. Потом кидаем на TLayout компонент «TRectangle» со свойством «Align – Content». Чтобы TLayout не мешался во время design-time, присвоим свойству Locked значение True. Кидаем остальные компоненты, чтобы получить окно нужного нам вида.
В итоге у меня получилась вот такая иерархия компонентов:
Компонент TRectAnimation используем для анимирования процесса появления окна. Вы можете придумать свою анимацию. В данном случае анимируется свойства формы «Padding».
Напишем следующий код, для того, чтобы при клике на тёмную область формы окно закрылось (событие формы OnTap работает на сенсорных экранах, если вам нужен OnClick тогда воспользуйтесь Layout’ми или Rectangle’ми):
Вот и всё. К сообщению, я приложил демо приложение с примером такого окна.
У администраторов просил бы поправить допущенные ошибки так как я не владею русским языком очень хорошем уровне. Или же добавит кое какие дополнительные информации ссылки и т.д.
Изменено пользователем Andrey Efimov Переписал сообщение с сохранением всех указанных свойств, кода, настроек. Оригинал могу предоставить всем желающим.
Вопрос
Axbor
Хотел бы поделиться опытом. Рассмотрим случай, когда вам необходимо использовать кастомное диалоговое окно с затемнением. Вроде вот такого:
Первое, что приходит в голову, это использование Rectangle’ов. Но такой подход показался мне очень сложным, и я нашёл другой способ (многие о нём уже знают) создания кастомного окна.
Сам способ:
Создаем вторую форму, и изменяем следующие свойства:
Transparency = True Fill->Color = #78000000 Fill->Kind = Solid
Поместим туда один TLayout, выставим свойство «Align» в значение «Center». И зададим нужный размер. Потом кидаем на TLayout компонент «TRectangle» со свойством «Align – Content». Чтобы TLayout не мешался во время design-time, присвоим свойству Locked значение True. Кидаем остальные компоненты, чтобы получить окно нужного нам вида.
В итоге у меня получилась вот такая иерархия компонентов:
Компонент TRectAnimation используем для анимирования процесса появления окна. Вы можете придумать свою анимацию. В данном случае анимируется свойства формы «Padding».
Напишем следующий код, для того, чтобы при клике на тёмную область формы окно закрылось (событие формы OnTap работает на сенсорных экранах, если вам нужен OnClick тогда воспользуйтесь Layout’ми или Rectangle’ми):
Вот и всё. К сообщению, я приложил демо приложение с примером такого окна.
У администраторов просил бы поправить допущенные ошибки так как я не владею русским языком очень хорошем уровне. Или же добавит кое какие дополнительные информации ссылки и т.д.Demo.zip
Изменено пользователем Andrey EfimovПереписал сообщение с сохранением всех указанных свойств, кода, настроек. Оригинал могу предоставить всем желающим.
Ссылка на комментарий
20 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.