Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.045 c
2-1136467746
Piter
2006-01-05 16:29
2006.01.22
TStringList с сохранением в файл


8-1123418199
Nick Denry
2005-08-07 16:36
2006.01.22
Изменяющийся регион или скины как у Windows Media Player a


2-1135951119
Id
2005-12-30 16:58
2006.01.22
Данные не сохраняются


2-1136034543
PaNDa000
2005-12-31 16:09
2006.01.22
Сети


14-1135949217
ANB
2005-12-30 16:26
2006.01.22
Какое расстояние от Туркмении до Украины по суше ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский