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

Вниз

Оконная тень   Найти похожие ветки 

 
Antonn ©   (2005-12-14 14:54) [0]

Проблемка наметилась, как решить не знаю.
Делаю тень у окна, но в течении работы ее нужно убрать. С этим уже проблемы.
Вот код, при щелчке на Чекбоксе устанавливается /сбрасывается флаг CS_DROPSHADOW, окно пересоздается.
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked then
  SetClassLong(Handle, GCL_STYLE, GetClassLong(Handle, GCL_STYLE) or CS_DROPSHADOW)
else
  SetClassLong(Handle, GCL_STYLE, GetClassLong(Handle, GCL_STYLE) and not CS_DROPSHADOW);

RecreateWnd;
end;

При установке тени проблем нет, она сразу появляется у окна, а вот при удалении она "отправляется в свободный полет на задний фон", т.е. висит себе в пространстве, не затирается и не исчезает. Собственно вопрос - как эту тень убить?

ЗЫ Причем при повторной установке флага, эта самая тень опять приклеивается к окну, и делает вид, что так и было...


 
Antonn ©   (2005-12-15 04:36) [1]

up?


 
TUser ©   (2005-12-15 16:42) [2]

Скажи InvalidateRect.


 
Antonn ©   (2005-12-15 17:28) [3]

TUser ©   (15.12.05 16:42) [2]
не помогает...


 
clickmaker ©   (2005-12-15 17:50) [4]

RedrawWindow(Self.Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or RDW_UPDATENOW)


 
Antonn ©   (2005-12-15 18:22) [5]

clickmaker ©   (15.12.05 17:50) [4]
все равно остается...

может я чего не понял? где писать
RedrawWindow(Self.Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or RDW_UPDATENOW) ?
поместил в тот же обработчик клика до/после/вместо RecreateWnd, все равно тень остается.


 
Antonn ©   (2005-12-15 18:47) [6]

хм, походу ее вообще никак нельзя убить...
и используется она "для маленьких и недолгоживущих окон", и, соответственно, помирает только с ними.
Ну не через задницу-ли сделано?..


 
Zeqfreed ©   (2005-12-15 21:28) [7]

Antonn ©   (15.12.05 18:47) [6]
Если мерцание не смущает, то:

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
 ShowWindow(Handle, SW_HIDE);

 if CheckBox1.Checked then
  SetClassLong(Handle, GCL_STYLE, GetClassLong(Handle, GCL_STYLE) or CS_DROPSHADOW)
 else
  SetClassLong(Handle, GCL_STYLE, GetClassLong(Handle, GCL_STYLE) and not CS_DROPSHADOW);

 RecreateWnd;
 ShowWindow(Handle, SW_NORMAL);
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.077 c
14-1135390869
SergP
2005-12-24 05:21
2006.01.22
посоветуйте компонент для построения графиков


6-1128695410
NikNet
2005-10-07 18:30
2006.01.22
Как изменить Сетевое имя/IP/Коментарий?


3-1132574911
NiGGa
2005-11-21 15:08
2006.01.22
ADOQuery c ADOConnection ом или без.


2-1136224653
Revan
2006-01-02 20:57
2006.01.22
Программа ТЕСТ


4-1131625646
max999
2005-11-10 15:27
2006.01.22
Вопрос по размерам окна