Форум: "Основная";
Текущий архив: 2009.02.22;
Скачать: [xml.tar.bz2];
ВнизКак создать плавно сворачивающийся и раскрывающийся контрол? Найти похожие ветки
← →
Dr.Andrew (2008-04-10 00:21) [0]Я попробывал такой код, но он очень некоррекно разворачивает и сворачивет (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.
Всем спасибо!
← →
Loginov Dmitry © (2008-04-10 07:59) [1]> Timer1.Interval := 250 или 1000 - эффект все равно очень
> плохой зрительно
поменьше интервалы не пробовал?
← →
Dr.Andrew (2008-04-10 08:34) [2]Доброе утро! Пробовал. Хотелось бы подсказку как сделать этот алоритм через функции Win API. Спасибо всем. Есть еще мнения?
← →
clickmaker © (2008-04-10 09:27) [3]если мерцает, то попробуй Panel.DoubleBuffered = true
← →
Dr.Andrew (2008-04-10 10:05) [4]Спасибо, пробывал. Не в мерцании только дело. По аналогии, например с офисом 2007 хотелось бы. Еще раз спасибо всем за обсуждение. Может еще есть мнения или ссылки на конкретные примеры решений.
← →
b z (2008-04-10 10:20) [5]Может с помощью AnimateWindow ?
← →
Dr.Andrew (2008-04-10 10:33) [6]b z
А как это? можете привести пример? Спасибо
← →
b z (2008-04-10 10:40) [7]как то так:
AnimateWindow(Panel1.Handle, 300, AW_HIDE or AW_HOR_NEGATIVE);
ну и тут подбирайть параметры
← →
b z (2008-04-10 10:45) [8]только это в Buttom1Click надо делать а не в таймере. :)
← →
Dr.Andrew (2008-04-10 10:49) [9]b z
функция AnimateWindow(Panel1.Handle, 300, AW_HIDE or AW_HOR_NEGATIVE); рисует черную рамку без правой границы и все - никакого эффекта изменения высоты панели. Что здесь не так? Спасибо!
← →
clickmaker © (2008-04-10 11:02) [10]AnimateWindow(Panel1.Handle, 200, AW_VER_POSITIVE or AW_HOR_POSITIVE);
← →
Dr.Andrew (2008-04-10 11:05) [11]clickmaker
Спасибо за совет, но Ваш пример вообще не работает. Нет никаких "движений" вообще. Что здесь не так? Спасибо.
← →
b z (2008-04-10 11:11) [12]
> Что здесь не так?
Тут не дебагер. Пора уже и в справку заглянуть.
А если эффект не тот, который ожидали, значит этот путь вам не подходит. :(
← →
clickmaker © (2008-04-10 11:33) [13]
> [11] Dr.Andrew (10.04.08 11:05)
а Visible = false перед анимацией?
AnimateWindow - она же как ShowWindow, только плавно
← →
Dr.Andrew (2008-04-10 11:39) [14]clickmaker
AnimateWindow нарисовала черный прямоугольник на панели и все....
← →
clickmaker © (2008-04-10 11:46) [15]
> [14] Dr.Andrew (10.04.08 11:39)
короче. Берешь панель, кладешь на форму. Высоту ставишь ту, которая должна быть ПОСЛЕ разворота. Visible = false
Потом (по нажатию кнопки) - AnimateWindow(Panel1.Handle, 200, AW_VER_POSITIVE);
Панель развернется сверху вниз.
← →
Dr.Andrew (2008-04-10 12:01) [16]Спасибо. Заработало. только панель окрашивается в черный цвет и обратно свернуть используя:
AnimateWindow(ElPageControl1.Handle, 200 или 0 (пробовал разные варианты), AW_VER_NEGATIVE);
не получается.
Спасибо
← →
clickmaker © (2008-04-10 12:06) [17]
> только панель окрашивается в черный цвет
странно... может это из-за ХР
← →
Dr.Andrew (2008-04-10 12:07) [18]у меня виста и delphi 2007
← →
clickmaker © (2008-04-10 12:30) [19]
> [18] Dr.Andrew (10.04.08 12:07)
> у меня виста и delphi 2007
а, ну тут я пас )
← →
NaRuTo © (2008-04-10 20:38) [20]Может выучишь DirectX
← →
Игорь Шевченко © (2008-04-10 21:14) [21]clickmaker © (10.04.08 12:30) [19]
> а, ну тут я пас )
Они наворовали, а мы мучайся :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2009.02.22;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.006 c