Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/37: Рейтинг темы: голосов - 37, средняя оценка - 4.86
 Аватар для ЗлОй ПрОграММер
9 / 9 / 2
Регистрация: 08.02.2010
Сообщений: 148

AnimateWindow

03.03.2010, 18:13. Показов 7056. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создаю постепенное появление формы через AnimateWindow, возникло 2 проблемы
1. Хочу чтоб форма появлялась по центру, но она сначала появляеться ,постепенно, в углу экрана и затем резко перескакивает на центр(( подскажите как исправить
2. На форме есть Edit и ComboBox, но они резко появляються после того как появиться форма а мне надо чтоб вместе с ней появлялись
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.03.2010, 18:13
Ответы с готовыми решениями:

AnimateWindow пропадает текст в Edit
Здравствуйте. Почему при использованию функции AnimateWindow(Handle, 100, AW_CENTER or AW_BLEND) пропадает текст на форме во всех edit? ...

AnimateWindow и регион
создаю медлено появляющееся и закрывающееся окно на основе региона открывается так if(!(flagWin&flAnimateOpen)) { ...

AnimateWindow Плавное передвижение при клике
Не могу сделать плавное появление при нажатие на кнопки, должно появиться окошко GroupBox (их несколько штук 3) 1 в состояние...

16
160 / 159 / 13
Регистрация: 14.01.2010
Сообщений: 1,497
03.03.2010, 18:28
У меня все нормально появляется
AnimateWindow(Handle, 500, AW_CENTER or AW_SLIDE);
хр сп 2
а дрвеб на это ругается
1
 Аватар для Ztrel
508 / 227 / 42
Регистрация: 14.11.2009
Сообщений: 371
03.03.2010, 20:45
Хех, знакомая проблема )

Насчет центрирования, попробуй в свойстве OnShow формы написать:

Delphi
1
2
Form1.Left:= (Screen.Width - Form1.Width) shr 1;
Form1.Top:= (Screen.Height - Form1.Height) shr 1;
1
 Аватар для ЗлОй ПрОграММер
9 / 9 / 2
Регистрация: 08.02.2010
Сообщений: 148
03.03.2010, 21:02  [ТС]
да она центрируется вот тока после того как закончиться анимация, а мне надо чтобы анимацияиз центра начиналась
0
 Аватар для Ztrel
508 / 227 / 42
Регистрация: 14.11.2009
Сообщений: 371
03.03.2010, 21:10
А ты когда начинаешь анимацию - после кода или перед?
1
 Аватар для ЗлОй ПрОграММер
9 / 9 / 2
Регистрация: 08.02.2010
Сообщений: 148
04.03.2010, 17:19  [ТС]
я в FormCreate пишу код
Delphi
1
AnimateWindow(Form1.Handle, 500, AW_BLEND OR SW_SHOW);
0
 Аватар для Ztrel
508 / 227 / 42
Регистрация: 14.11.2009
Сообщений: 371
08.03.2010, 14:10
Э неет, так не пойдет. Так у тебя форма проанимирует только один раз, при ее создании.
А тебе, наверно, надо, чтобы форма каждый раз при появлении центрировалась и анимировалась, да?

Ну, в этом случае в свойство формы OnShow пишем

Delphi
1
2
3
4
5
6
procedure TForm1.FormShow(Sender: TObject);
begin
Form1.Left:= (Screen.Width - Form1.Width)   shr 1;
Form1.Top:=  (Screen.Height - Form1.Height) shr 1;
AnimateWindow(Handle, 500,AW_BLEND OR AW_SLIDE);
end;
И все будет OK ))


P.S. - А кстати, что за свойство в анимации SW_SHOW ? О_о
0
 Аватар для ЗлОй ПрОграММер
9 / 9 / 2
Регистрация: 08.02.2010
Сообщений: 148
08.03.2010, 15:07  [ТС]
SW_SHOW показать SW_HIDE скрыть, да дело то не в этом, форма центрируется после того как закончиться анимация, а мне надо чтобы анимация из центра начиналась
0
160 / 159 / 13
Регистрация: 14.01.2010
Сообщений: 1,497
09.03.2010, 11:43
Попробуй AW_BLEND OR SW_SHOW
0
 Аватар для ЗлОй ПрОграММер
9 / 9 / 2
Регистрация: 08.02.2010
Сообщений: 148
09.03.2010, 16:50  [ТС]
пробовал уже! выше написано)) неработает
0
 Аватар для Ztrel
508 / 227 / 42
Регистрация: 14.11.2009
Сообщений: 371
09.03.2010, 17:30
Не понимаю, только что написал себе


Delphi
1
2
3
4
5
6
procedure TForm1.FormShow(Sender: TObject);
begin
Form1.Left:= (Screen.Width - Form1.Width)   shr 1;
Form1.Top:=  (Screen.Height - Form1.Height) shr 1;
AnimateWindow(Handle, 500,AW_CENTER OR AW_SLIDE);
end;
И все работает!
1
160 / 159 / 13
Регистрация: 14.01.2010
Сообщений: 1,497
09.03.2010, 19:51
Да с предыдущем ответом я ошибся, форма на этапе разработки уже стояла почти по центру:
А попробуй так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Left:=(Screen.Width - Form1.Width) div 2;
Form1.Top:= (Screen.Height - Form1.Height) div 2;
AnimateWindow(Handle, 500, AW_CENTER or AW_SLIDE);
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
form1.SetFocus;//форма примет фокус
timer1.Enabled:=false;
end;
таймер поставь на 1.
0
 Аватар для Ztrel
508 / 227 / 42
Регистрация: 14.11.2009
Сообщений: 371
09.03.2010, 19:58
Так-с, ребят, давайте поясним задачу. Что, собственно, требуется?

Если надо, чтобы форм анимировалась из центра и центрировалась только ОДИН раз, тогда надо использовать твой код, turboq.
А вот если надо чтобы при КАЖДОМ появлении формы форма делала все тоже самое, надо использовать мой
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
09.03.2010, 23:31
Ztrel,
Цитата Сообщение от Ztrel Посмотреть сообщение
procedure TForm1.FormShow(Sender: TObject);
begin
Form1.Left:= (Screen.Width - Form1.Width) shr 1;
Form1.Top:= (Screen.Height - Form1.Height) shr 1;
AnimateWindow(Handle, 500,AW_BLEND OR AW_SLIDE);
end;
А как сделать наоборот? Что бы при закрытии формы, она схлопывалась?

Добавлено через 2 минуты
Или еще какой нибудь простенький эффект сделать?
0
160 / 159 / 13
Регистрация: 14.01.2010
Сообщений: 1,497
10.03.2010, 10:06
Ztrel,
И мой и твой код это одно и тоже только я делю модом а ты сдвигаешь бит в право(хотя это не рекомендуют), плюс я еще устанавливаю фокус формы.
А вот при закрытие код
Delphi
1
2
3
4
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
AnimateWindow(handle, 500,AW_CENTER OR AW_SLIDE  or AW_HIDE);
end;
Погуглил, полно инфы по теме
1
 Аватар для ЗлОй ПрОграММер
9 / 9 / 2
Регистрация: 08.02.2010
Сообщений: 148
10.03.2010, 14:42  [ТС]
всё заработало, спасибо
0
 Аватар для Ztrel
508 / 227 / 42
Регистрация: 14.11.2009
Сообщений: 371
10.03.2010, 19:08
turboq,
Да я и не спорю, что наши коды - это одно и тоже. Разница лишь в том, КУДА мы их засунули. Ты - в FormCreate, а я в FormShow... Из-за этого разные эффекты
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.03.2010, 19:08
Помогаю со студенческими работами здесь

После "AnimateWindow" не срабатывает "WindowState = wsMaximized"
Приветствую. Создана форма, развернутая на весь экран: WindowState = wsMaximized Решил придать форме немного изящности. Использую функцию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru