Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: CL | DM;

Вниз

Как отключить эффект сворачивания окна?   Найти похожие ветки 

 
Jiurasrasr   (2004-08-31 17:41) [0]

Есть mdi приложение.И есть некоторое количество Child окон.
Есть кнопки Вперед,Назад, которые переключают Child окна попрядку.А именно одно из окон child становиться wsMaximized а то которое было на весь экран, становиться wsNormal.Проблема в том что раскрытие окна идет не мгновенно.Т.е. видно как сворачивается одно окно, и как потом разворачивается другое, что неудобно, вернее некрасиво.Я хотел бы чтобы сворачивание и разворачиваниен проводилось безо всяких визуальных эффектов, т.е. наиболее быстро. Как это можно сделать?


 
Synochka   (2004-08-31 19:31) [1]

А зачем ты их именно так переключаешь? Есть же Next.....


 
Almaz ©   (2004-08-31 22:57) [2]

Отключить эффект сворачивания окна только в своем приложении нельзя, его можно отключить только во всей системе. Сделать это можно так:

var
 AniInfo : TAnimationInfo;
...
 AniInfo.cbSize := SizeOf(TAnimationInfo);
 AniInfo.iMinAnimate := 0;
 SystemParametersInfo(SPI_SETANIMATION, SizeOf(AniInfo), @AniInfo, 0);


Этот код выключит анимацию сворачивания/разворачивания окна во всей системе, но с моей точки зрения программа влияющая на всю систему без ведома пользователя - это плохой тон. Поэтому рекомендую вам сделать следующее:
1. В обработчике Application.OnActivate выполнять следующий код:

 AniInfo.cbSize := SizeOf(TAnimationInfo);
 SystemParametersInfo(SPI_GETANIMATION, SizeOf(AniInfo), @AniInfo, 0);
 PrevAniStatus := AniInfo.iMinAnimate;
 if AniInfo.iMinAnimate <> 0 then
 begin
   AniInfo.iMinAnimate := 0;
   SystemParametersInfo(SPI_SETANIMATION, SizeOf(AniInfo), @AniInfo, 0);
 end;
, где PrevAniStatus - это глобальная переменная, в которой будет храниться включена или выключена была анимация до активации вашенго приложения.

2. В обработчике Application.OnDeactivate возвращать то состояние анимации, которое было до активации вашей программы:

 AniInfo.iMinAnimate := PrevAniSatus;
 SystemParametersInfo(SPI_SETANIMATION, SizeOf(AniInfo), @AniInfo, 0);


Удачи.


 
MIm1 ©   (2004-09-01 08:51) [3]

Странно, я кажется писал

LockWindowUpdate(application.mainform.handle);
childform.style:= wsmaximized;
LockWindowUpdate(0);


 
Almaz ©   (2004-09-01 23:47) [4]


> MIm1 ©   (01.09.04 08:51) [3]
> Странно, я кажется писал
>
> LockWindowUpdate(application.mainform.handle);
> childform.style:= wsmaximized;
> LockWindowUpdate(0);

Функция LockWindowUpdate запрещает пересовку клиентской части окна, анимации окон она не запретит.


 
Mim1 ©   (2004-09-02 00:55) [5]


> [4] Almaz ©   (01.09.04 23:47)


:)
Странно, по моему результат налицо, и имхо это более красивый метод чем [2].


 
Экспериментатор   (2004-09-02 06:58) [6]

Между прочим именно так
как написал
Almaz ©   (31.08.04 22:57) [2]
и делает Борланд
Изучайте исходники


 
Mim1 ©   (2004-09-02 11:36) [7]


> [6] Экспериментатор   (02.09.04 06:58)


> и делает Борланд

Между прочим я это знаю, и тем не менее... см.[5]


 
Almaz ©   (2004-09-03 23:01) [8]


> :)
> Странно, по моему результат налицо, и имхо это более красивый
> метод чем [2].

Ну свой метод я никому не навязываю :) Просто я только что еще раз проверил ваш способ в своей программе, в которой я столкнулся в свое время с аналогичной проблемой, т.к. он мне тоже по компактности нравится намного больше, но он не работает у меня Win2000SP4 professional.
Такжен, согласно MSDN функция LockWindowUpdate не влияет на анимацию окон.

Удачи.


 
Mim1 ©   (2004-09-04 06:48) [9]

Ну что начнем холивар? Раунд первый. Телепузики круче покемонов! :)


 
GrayFace ©   (2004-09-05 09:04) [10]

А если не сворачивать-разворачивать, а просто прятать? Или прятать, потом сворачивать-разворачивать, а потом показывать?


 
@BraIN ©   (2004-09-05 09:16) [11]

2 GrayFace ©   (05.09.04 09:04) [10]

Не поможет, все равно анимация будет.


 
Lenor ©   (2004-09-06 02:10) [12]

а как-то же сделано сворачивание всех окон без анимации при нажатии на ярлычок "свернуть все окна", который на панели задач слева :) Или это не то?..


 
DVM ©   (2004-09-06 21:49) [13]


> а как-то же сделано сворачивание всех окон без анимации
> при нажатии на ярлычок "свернуть все окна", который на панели
> задач слева :) Или это не то?..

А они не сворачиваются вообще. Desktop двигается наверх.



Страницы: 1 вся ветка

Текущий архив: 2004.10.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
3-1095156880
Andriy Tysh
2004-09-14 14:14
2004.10.10
ADOQuery.SQL.Add( ... ) &amp; Transaction


4-1094727071
Erik1
2004-09-09 14:51
2004.10.10
Организация TimeOut для Overlapped чтения из com порта.


3-1094814451
nick-from
2004-09-10 15:07
2004.10.10
Помогите пожалуйста составить запрос


1-1095888698
Константинов
2004-09-23 01:31
2004.10.10
Подскажите, как правильно работать со свойствами-массивами


1-1095413767
Ms.Dunkul
2004-09-17 13:36
2004.10.10
height





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