Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как создать плавно сворачивающийся и раскрывающийся контрол? [D7, WinXP]


Страницы:   1 2

Dr.Andrew ©   (2008-04-10 00:21:00) 

Я попробывал такой код, но он очень некоррекно разворачивает и сворачивет (Panel1.Height = 127, при создании формы устанавливаю Timer1.Enabled := False; Timer1.Interval := 250 или 1000 - эффект все равно очень плохой зрительно!):

procedure TForm1.Buttom1Click(Sender: TObject);
begin
Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Button1.ImageIndex = 7 then
begin
Panel1.Height := Panel1.Height + 5;
if Panel1.Height > 127 then
Timer1.Enabled := False;
end
else
begin
Panel1.Height := Panel1.Height - 5;
if Panel1.Height < 1 then
Timer1.Enabled := False;
end;
end;

Подскажите, пожалуйста, лучшее решение может через WinAPI.
Всем спасибо!


Игорь Шевченко   (2008-04-10 21:14:00) [1]

clickmaker ©   (10.04.08 12:30) [19]


> а, ну тут я пас )


Они наворовали, а мы мучайся :)


NaRuTo   (2008-04-10 20:38:00) [2]

Может выучишь DirectX


clickmaker   (2008-04-10 12:30:00) [3]


> [18] Dr.Andrew   (10.04.08 12:07)
> у меня виста и delphi 2007

а, ну тут я пас )


Dr.Andrew   (2008-04-10 12:07:00) [4]

у меня виста и delphi 2007


clickmaker   (2008-04-10 12:06:00) [5]


> только панель окрашивается в черный цвет

странно... может это из-за ХР


Dr.Andrew   (2008-04-10 12:01:00) [6]

Спасибо. Заработало. только панель окрашивается в черный цвет и обратно свернуть используя:
AnimateWindow(ElPageControl1.Handle, 200 или 0 (пробовал разные варианты), AW_VER_NEGATIVE);
не получается.
Спасибо


clickmaker   (2008-04-10 11:46:00) [7]


> [14] Dr.Andrew   (10.04.08 11:39)

короче. Берешь панель, кладешь на форму. Высоту ставишь ту, которая должна быть ПОСЛЕ разворота. Visible = false
Потом (по нажатию кнопки) - AnimateWindow(Panel1.Handle, 200, AW_VER_POSITIVE);
Панель развернется сверху вниз.


Dr.Andrew   (2008-04-10 11:39:00) [8]

clickmaker
AnimateWindow нарисовала черный прямоугольник на панели и все....


clickmaker   (2008-04-10 11:33:00) [9]


> [11] Dr.Andrew   (10.04.08 11:05)

а Visible = false перед анимацией?
AnimateWindow - она же как ShowWindow, только плавно


b z   (2008-04-10 11:11:00) [10]


> Что здесь не так?

Тут не дебагер. Пора уже и в справку заглянуть.
А если эффект не тот, который ожидали, значит этот путь вам не подходит. :(


Dr.Andrew   (2008-04-10 11:05:00) [11]

clickmaker
Спасибо за совет, но Ваш пример вообще не работает. Нет никаких "движений" вообще. Что здесь не так? Спасибо.


clickmaker   (2008-04-10 11:02:00) [12]

AnimateWindow(Panel1.Handle, 200, AW_VER_POSITIVE or AW_HOR_POSITIVE);


Dr.Andrew   (2008-04-10 10:49:00) [13]

b z
функция AnimateWindow(Panel1.Handle, 300, AW_HIDE or AW_HOR_NEGATIVE); рисует черную рамку без правой границы и все - никакого эффекта изменения высоты панели. Что здесь не так? Спасибо!


b z   (2008-04-10 10:45:00) [14]

только это в Buttom1Click надо делать а не в таймере. :)


b z   (2008-04-10 10:40:00) [15]

как то так:
AnimateWindow(Panel1.Handle, 300, AW_HIDE or AW_HOR_NEGATIVE);
ну и тут подбирайть параметры


Dr.Andrew   (2008-04-10 10:33:00) [16]

b z
А как это? можете привести пример? Спасибо


b z   (2008-04-10 10:20:00) [17]

Может с помощью AnimateWindow ?


Dr.Andrew   (2008-04-10 10:05:00) [18]

Спасибо, пробывал. Не в мерцании только дело. По аналогии, например с офисом 2007 хотелось бы. Еще раз спасибо всем за обсуждение. Может еще есть мнения или ссылки на конкретные примеры решений.


clickmaker   (2008-04-10 09:27:00) [19]

если мерцает, то попробуй Panel.DoubleBuffered = true


Dr.Andrew   (2008-04-10 08:34:00) [20]

Доброе утро! Пробовал. Хотелось бы подсказку как сделать этот алоритм через функции Win API. Спасибо всем. Есть еще мнения?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо