![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Проблемы копирования фрейма в дочерний элемент панели в Delphi XE2 на Windows 8Delphi , Программа и Интерфейс , Диалоги и ФреймыВопрос, поднятый пользователем, заключается в проблеме копирования содержимого фрейма (TFrame) на дочерний элемент панели (TJvPanel), который является дочерним элементом этого фрейма. При попытке отобразить содержимое фрейма на переднем плане панели в оттенках серого, обработанное методом ProEffectImage, вместо этого отображается непрозрачный белый фон. Пользователь использовал TJvPanel, так как он предоставляет событие OnPaint, и следовал инструкциям из другого поста, но проблема так и не была решена. Описание проблемыИспользуя среду разработки Delphi XE2, 32-битное приложение VCL на Windows 8, разработчик пытается скопировать фон фрейма на дочерний элемент панели (TJvPanel), который уже является дочерним элементом фрейма. После вызова метода ShowAddReceiptPanel, должен быть выполнен рисунок содержимого окна фрейма (TfrmMyFrame) с уже расположенными на нем элементами управления (включая Grid и PageControl) на передней панели, в оттенках серого, после обработки методом ProEffectImage. Однако вместо этого отображается непрозрачный белый фон. Анализ кодаВ коде, предоставленном пользователем, есть несколько моментов, которые могут вызвать проблемы:
Подтвержденный ответПроблема заключается в том, что контекст устройства (DC), присвоенный полю Fcnvs, является недействительным за пределами метода PaintWindow. Это означает, что попытка копирования контекста в TProEffectImage в методе pnlAddNewBGPaint не будет успешной. Альтернативное решениеДля решения проблемы можно использовать метод PaintTo, который позволяет скопировать содержимое фрейма в объект TBitmap. Создаем битмап нужного размера и передаем его контекст устройства в метод PaintTo. После этого можно применить эффекты обработки изображения и скопировать битмап на контекст устройства TJvPanel.
ЗаключениеПри работе с контекстом устройства в Delphi важно учитывать его область видимости и жизненный цикл. Метод PaintTo предоставляет удобный способ копирования содержимого контролов, что решает проблему, описанную пользователем. Пользователь сталкивается с проблемой копирования содержимого фрейма в дочерний элемент панели в среде Delphi XE2 на Windows 8, где вместо отображения содержимого в оттенках серого появляется непрозрачный белый фон. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Диалоги и Фреймы ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |