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

Вниз

Как создать плавно сворачивающийся и раскрывающийся контрол?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.012 c
15-1230264209
Slider007
2008-12-26 07:03
2009.02.22
С днем рождения ! 26 декабря 2008 пятница


2-1231824561
r900000
2009-01-13 08:29
2009.02.22
Работа с Мемо компонентами


15-1230283845
vajo
2008-12-26 12:30
2009.02.22
Радиоконструктор Экон-1


6-1177647982
Lamer666
2007-04-27 08:26
2009.02.22
SMS Sender


15-1230205417
тимохов
2008-12-25 14:43
2009.02.22
Почему в русской WinXP меню могут показываться кракозяблами?