![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
AnimateWindow и XPManifest [D7, WinXP]
KiBERMiKE © (2005-09-13 13:18:00)Задача такая: Красиво выезжает Форма, а на ней компоненты в стиле XP.
Что делаю я:
1. Добавляю компоненты... например TComboBox и TEdit.
2. Добавляю XPManifest.
3. В Form1.OnShow пишу:
AnimateWindow(Form1.Handle, 500, AW_CENTER + AW_SLIDE + AW_ACTIVATE);
4. Запусускаю программу, и (!) в стиле XP прорисовывается только ComboBox, а все Edit~ы остались обычными. К ним подводишь курсор и они становяться XP~шными....
Вопрос: Как сделать так, чтобы все компоненты появились в стиле Xp???
Заранее спасибо!
KiBERMiKE (2005-09-14 09:39:00) [1]В общем-то как вариант можно... Правда если используется много компонентов придётся писать цикл для Form1.Controls, всех Энэблить и Дисэблить (Скрывать и показывать), а это займёт некоторое время. Да, и при этом я могу использовать скрытые (или задисэблинутые) контролы, тогда, после этого цикла, они появються (энейблинуться).
Может есть ещё какой-то вариант? Как заставить все контролы на форме перерисовать свои регионы (Repaint не помогает)?
Big Joe (2005-09-13 17:19:00) [2]также сработает если напишешь так:
Edit1.Visible:=false;
Edit1.Visible:=true;
Big Joe (2005-09-13 17:16:00) [3]Есть решение
AnimateWindow(Form1.Handle, 500, AW_CENTER + AW_SLIDE + AW_ACTIVATE);
затем напиши:
Edit1.enabled:=false;
Edit2.enabled:=true;
Big Joe (2005-09-13 17:16:00) [4]Извини Ошибся
Edit1.enabled:=false;
Edit1.enabled:=true;
KiBERMiKE (2005-09-13 14:01:00) [5]Пробывал делать: Form1.Refresh, Form1.Update, Form1.Invalidate... всё это не помогает.
Помогает только ShowWindow(Form1.Handle, 0), но от этого форма неприятно дёргается (исчезает и появляется).
Может всё-таки есть более корректное решение?