Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
6-1199546330
maxistent
2008-01-05 18:18
2009.02.22
Обновление событий...


15-1230055660
TUser
2008-12-23 21:07
2009.02.22
О теории кайфа


3-1214728468
Kolan
2008-06-29 12:34
2009.02.22
Как правильно сохранить в базу массив Double?


15-1230012779
Slider007
2008-12-23 09:12
2009.02.22
С днем рождения ! 23 декабря 2008 вторник


2-1231535405
Pavelkq
2009-01-10 00:10
2009.02.22
Непонятки с базой данных





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