Форум: "Основная";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
ВнизОконная тень Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.111 c