|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.01.2014, 12:14 | #1 |
Новичок
Джуниор
Регистрация: 12.01.2014
Сообщений: 5
|
Взаимодействие с невидимым компонентом
Всем привет!
Суть проблемы в следующем: На форме есть панель (TPanel) с цветом (например clSilver), на ней - PaintBox. В свойствах главной формы (TForm) для TransparentColorValue указан clSilver. Свойство TransparentColor установлено в True. Задача: организовать интерактивное взаимодействие невидимого объекта PaintBox с мышкой или клавиатурой для вывода графики. Проблема: После запуска приложения TPanel становится прозрачной и являясь владельцем TPaintBox игнорирует все генерируемые события для PaintBox типа OnMouseMove. Перехват мышиных и клавиатурных событий через SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, HInstance, 0) в принципе работает но требует фильтрации координат по клиентской области PaintBox, коме этого необходимо придумать фильтр на накрытие этой области другими окнами. Может есть более элегантный способ поймать эти сообщения в самом PaintBox? Заранее спасибо за идеи! |
12.01.2014, 12:38 | #2 |
Старожил
Регистрация: 03.01.2014
Сообщений: 2,870
|
Простите, но не совсем понятна постановка задачи и требуемый результат.
Если нужно что-то нарисовать в определённом месте экрана, то здесь скорее подойдёт просто Canvas которому передан его handle. |
12.01.2014, 12:49 | #3 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
Как-то слишком сложно. Используй только PaintBox, предварительно покрасив его как панель.
|
12.01.2014, 12:53 | #4 |
Новичок
Джуниор
Регистрация: 12.01.2014
Сообщений: 5
|
Необходимо в области PaintBox отследить координату мыши, нажатие левой/правой/ и т.п. кнопки мыши и клавиатуры для вывода изображения именно в этой точке, но события OnMouseDown, OnMouseMove и т.п. не ловятся по причине невидимости его Owner'a - TPanel.
|
12.01.2014, 12:58 | #5 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
Как вариант, рисовать на Image. TImage "ловит" все эти события.
|
12.01.2014, 12:59 | #6 |
Новичок
Джуниор
Регистрация: 12.01.2014
Сообщений: 5
|
В том-то и проблема, что область должна быть прозрачной, так как под ней находится другое приложение с выводом видео в окне с координатами моего TPaintBox и мне нужно поверх видео (как-бы) вывести графику.
|
12.01.2014, 13:04 | #7 |
Форумчанин
Регистрация: 28.09.2013
Сообщений: 115
|
У меня в С++ Builder был глюк с TransparentColorValue, при выставлении некоторых цветов форма становилась прозрачной но отверстие в ней не появлялось и события на прозрачных элементах отлавливались как обычно. Как не глупо это звучит, но попробуйте другой цвет
Что бы еще такого сделать, чтобы ничего не делать?
|
12.01.2014, 13:13 | #8 |
Новичок
Джуниор
Регистрация: 12.01.2014
Сообщений: 5
|
К сожалению в Delphi нет свойства прозрачности в процентах как на формах VisualStudio. там можно поставить прозрачность на 99% и видно будет хорошо сквозь окно и события будут ловится.
|
12.01.2014, 13:16 | #9 |
Форумчанин
Регистрация: 28.09.2013
Сообщений: 115
|
а AlphaBlendValue и AlphaBlend?
Что бы еще такого сделать, чтобы ничего не делать?
|
12.01.2014, 13:23 | #10 |
Новичок
Джуниор
Регистрация: 12.01.2014
Сообщений: 5
|
AlphaBlendValue и AlphaBlend делают прозрачной всю форму и все объекты управления на ней, вот если-бы такое свойство было у TPanel ...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сделать Excel невидимым на панели задач в VBA? | kss | Microsoft Office Excel | 3 | 13.05.2012 15:43 |
У меня почему то TTabSheet не становиться невидимым. | tonatas | Общие вопросы Delphi | 1 | 01.09.2010 12:52 |
курсор с компонентом | ASЯ | Помощь студентам | 11 | 16.05.2010 00:02 |
Помогите с компонентом | Aндрей | Помощь студентам | 2 | 13.05.2009 15:30 |
Как сделать курсор невидимым??? | Teen4jump | Общие вопросы Delphi | 6 | 27.06.2007 01:57 |