Главная страница
    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.46 MB
Время: 0.025 c
6-1128667011
marcel
2005-10-07 10:36
2006.01.22
кириллица в ссылке


2-1136534695
Zhekson
2006-01-06 11:04
2006.01.22
Фильтрация и перебор записей


3-1132313758
td
2005-11-18 14:35
2006.01.22
создание таблицы запросом


1-1134722112
scorpio_md
2005-12-16 11:35
2006.01.22
Как закрыть EXCEL без запроса на сохранение


14-1135635473
GanibalLector
2005-12-27 01:17
2006.01.22
RS232-клава и удаленное подключение





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский