Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 264

/ вопрос открыт /

Здравствуйте!

Мне нужен компонент типа выдвижной панели, чтобы можно было поместить на него любые другие компоненты. Поставить где-нибудь на форме и при вызове функции он либо будет выдвигаться, либо выдвигаться.

Такая панель например используется в Winamp'e как эквалайзер. Она выдвигается вниз вместе с компонентами на ней.

Виталий Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Виталий (статус: 2-ой класс)
Вопрос отправлен: 12 января 2008, 17:28
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Виталий!
А почему это обязательно должен быть компонент? Есть по крайней мере два варианта решения этой проблемы.
Вариант 1
Делаем ещё одну форму, которая будет появляться/скрываться при нажатии на кнопку. что бы сделать разворачивание - можно использовать таймер например, который будет его менять. тоесть кнопка только отображает форму и запускает таймер. а он уже потихоньку разворачивает и останавливается, когда размер стал достаточным. А выставив стиль borderStyle=bsNone - мы убираем заголовок и может оформлять форму, как хотим.

Вариант два. Дополнительной формы нет. Просто изменяем размер основной формы. Но для создания эффекта подобного винампу, читаем статьи о формах произвольной формы, благо дело добра этого хватает. Например прям на этом сайте - https://www.delphi-int.ru/articles/4/

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 12 января 2008, 18:29
Оценка за ответ: 4


Мини-форум вопроса

Всего сообщений: 7; последнее сообщение — 17 января 2008, 11:20; участников в обсуждении: 3.
Аксион

Аксион (статус: 4-ый класс), 15 января 2008, 17:44 [#1]:

Витя не слушай Вадима а лучше ищи в интернете компонент collapsepanel он тебе подойдёт (зачем делать самому если для нас это уже сделали)
Виталий

Виталий (статус: 2-ой класс), 15 января 2008, 19:14 [#2]:

правильно говоришь, блазер! спасибо!
Вадим К

Вадим К (статус: Академик), 16 января 2008, 02:12 [#3]:

Обоим. Не один компонент не может быть за пределами формы. (ну разве что иконка в трее). Подумайте хорошо над этим.
Так как эквалайзер отображается сбоку/снизу и имеет отличные размеры, то панелькой это быть не может. Это просто таже форма.
А эффект вылета/пропадания можно вообще то сделать и без таймеров - пара строк апифункций.
Галочка "подтверждения прочтения" - вселенское зло.
Виталий

Виталий (статус: 2-ой класс), 16 января 2008, 11:33 [#4]:

я разобрался. сделал через дочерние формы. но для выдавижения я использую таймер (не стандартный а таймер из JEDI).
а по-подрообней про апифункции можно узнать?
Аксион

Аксион (статус: 4-ый класс), 16 января 2008, 15:01 [#5]:

Виталий сделай половину формы прозрачной и borderstyle:=bsnone и на край видимой части поставь collapsepanel и получитсо как тебе надо (чтобы сделать пол формы нивидимой используй transperentcolor и transperentcolorvalue) и давай заходи на ирк канал наш #delphiintru в сети DalNet.
P.S. мои ошибки считайте за улыбки (если они тут есть)
Вадим К

Вадим К (статус: Академик), 16 января 2008, 21:39 [#6]:

Разворачивание формы можно сделать например так. в OnFormCreate вставляем код
AnimateWindow(Handle, 500, AW_HOR_POSITIVE);
потом идём сюда http://www.sysman.ru/index.php?showtopic=5376 и читаем о других константах, которые можно использовать
Галочка "подтверждения прочтения" - вселенское зло.
Виталий

Виталий (статус: 2-ой класс), 17 января 2008, 11:20 [#7]:

ладно спасибо большое всем!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:47
Выполнено за 0.03 сек.