Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

хочу сделать у этой формы тень   Найти похожие ветки 

 
Delphi5.01 ©   (2004-12-14 11:49) [0]

Доброе время суток,
Я без проблем могу создать форму с любым контуром (это несколько десяток строк кода), но я хочу сделать у этой формы тень. Как делать тень я тоже разобрал. Но вот сейчас возникла такая проблема.
Я делаю все в следующей последовательности:
1) Я создаю форму заведомо большего контура на 10 пикселов.
2) На форму я рисую все что заслоняет программа на рабочем столе.
3) В середине тень форму, используя маску.
4) Сверху рисую саму форму.
В результате получаю программу на рабочем столе с тенью. Но проблема заключается в том что пользователь может временно минимизировать программу, изменить расположение иконок на рабочем столе и потом восстановить мою программу из TaskBar, и вот тогда возникают траблы. Изображение рабочего стола не совпадает с изображением которое сохранил при запуске программы.
Что делать для решения данной проблемы?
П.С. Если есть возможность частично сделать прозрачным форму то решение есть. Но как ее сделать полностью полу прозрачным я знаю но полностью нет.
Спасибо


 
DVM ©   (2004-12-14 12:26) [1]


> Что делать для решения данной проблемы?

После минимизации/восстанавливания надо отрисовать все заново.


 
Delphi5.01 ©   (2004-12-14 12:41) [2]

Согласен, но это конкретный случай.
А что если изменение рабочего стола произошло не минимизируя главной формы?
Можно решить проблему если сможем отловить потерю фокуса программы. Но это не получается сделать. А если бы смогли то мы бы минимизировали программу на момент потери фокуса.
Спасибо


 
DVM ©   (2004-12-14 12:48) [3]


> Но это не получается сделать.

Почему?


 
Delphi5.01 ©   (2004-12-14 12:56) [4]

Точно не помню, я этот метод пытался использовать несколько недель назад. Были серьезные проблемы, правда не помню какие. Я гляну исходник и скажу.


 
Delphi5.01 ©   (2004-12-15 15:00) [5]

Проблема заключается в том что я не могу поймать момент деактивизации формы.
Получается только если использую следующий код:
 if (Msg.message<>45057)and(Msg.wParam=1)and(Msg.lParam=0) then
   Application.Minimize;
Но не могу поймать момент когда форма уже минимизирована. Что бы сделать скриншот.



Страницы: 1 вся ветка

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.055 c
6-1101480819
User1
2004-11-26 17:53
2005.02.06
Помогите c конвертированием строки


3-1104391722
atruhin
2004-12-30 10:28
2005.02.06
Перенос БД с Firebird 1.5 на Interbase 5.6


4-1103546978
lovres
2004-12-20 15:49
2005.02.06
Как узнать запущено ли приложение? Подскажите функцию


1-1106729414
Angela
2005-01-26 11:50
2005.02.06
Чтобы Panel1 и Panel2 не пересекались!


14-1106164650
тихий вовочка
2005-01-19 22:57
2005.02.06
лохотрон