Главная страница
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.055 c
3-1132771300
alexmember
2005-11-23 21:41
2006.01.22
Задержка отображения записей на pentium 3


3-1132653380
ShiFT
2005-11-22 12:56
2006.01.22
получение BLOBField в Потоке.


2-1136541216
Дева
2006-01-06 12:53
2006.01.22
Надежность баз данных


1-1135025594
Volf_555
2005-12-19 23:53
2006.01.22
Как в Delphi создать собственное хранилище файлов и папок?


2-1135652426
stef
2005-12-27 06:00
2006.01.22
Не правильно работает цикл for