|
Вопрос # 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]:
ладно спасибо большое всем!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|