Перейти к содержанию
Fire Monkey от А до Я
  • 0

Всплывающая панель


Alexander

Вопрос

Хочу реализовать всплывающую панель с объектами управления.

Если сделать анимацию открытие/закрытие панели на тригерах (IsMouseOver=true/IsMouseOver=false) , то при наведении мыши на контрол управления в панели(допустим кнопка) соотвественно панель сворачивается. По логике работы всё верно, но "оно мне так не надо". Какие будут предложения?

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

...при наведении мыши на контрол управления в панели(допустим кнопка) соотвественно панель сворачивается. По логике работы всё верно, но "оно мне так не надо".

Хм... А как Вам надо? И почему у Вас по логике верно, что при наведении мыши на контрол, панель должна свернуться? Как я понимаю, в обычном состоянии панель у Вас не должна быть видна. Тогда вопрос: куда надо навести курсор мыши, чтобы панель появилась? А если панель в обычном состоянии видна, то по Вашей "верной логике работы" при наведении на нее мыши панель свернется. Как же тогда на ней нажать кнопку?

Ссылка на комментарий
  • 0

Когда то эту проблему я решил так 

кидаешь на форму панель а в него два FloatAnimation

В свойствах компонента делал примерно так

 

FloatAnimation1->PropertyName->Scale.X;

FloatAnimation2->PropertyName->Scale.X;

 

FloatAnimation1->StartValue->1;

FloatAnimation1->StopValue->3;

 

FloatAnimation2->StartValue->3;

FloatAnimation2->StopValue->1;

 

и потом в событиях панели так

procedure TForm1.Panel1MouseEnter(Sender: TObject);
begin
FloatAnimation1.Start;
end;

procedure TForm1.Panel1MouseLeave(Sender: TObject);
begin
FloatAnimation2.Start;
end;
Изменено пользователем R.is
Ссылка на комментарий
  • 0

Все это можно сделать при помощи одной анимации.

В инспекторе объектов:

FloatAnimation1.PropertyName = "Scale.X";

FloatAnimation1.StartValue = 1;

FloatAnimation1.StopValue = 3;

FloatAnimation1.Inverse = true;

procedure TForm1.Panel1MouseEnter(Sender: TObject);
begin
FloatAnimation1.Inverse = not FloatAnimation1.Inverse;
FloatAnimation1.Start;
end;

procedure TForm1.Panel1MouseLeave(Sender: TObject);
begin
Panel1MouseEnter(this);
end;

Но только топикстартеру похоже это уже не надо.

Изменено пользователем d7d1cd
Ссылка на комментарий
  • 0

Но только топикстартеру похоже это уже не надо.

Надо, пока не добрался до компа,пишу со смартфона, что я хотел получить :

На форму кладём панель, на неё допустим кнопку в позиции по вертикали 35. У панели свойство height выставляем в 30, чтоб скрыть кнопку. Еще у панели нужно выставить свойство ClipChildren в true, чтоб скрыть кнопку. К панели прикрепляем Floatanimation, Startposition := 30; StopPosition := 60; триггеры выставляем на вход мыши и выход мыши. Запускаем приложение. Если подвести мышь к панели она развертится, но при попытке навести мышь на кнопку панель свернется. В общем, кнопку не нажать. Еще обнаружен баг. При сворачиваНИИ панели и установленном ClipChildren := true остаются следы от панели по мере сворачивания

Ссылка на комментарий
  • 0

   d7d1cd,  Спасибо!

Это конечно "костыль", такой же как и мой. На панель подвесил две анимации. первая на открытие, вторая на закрытие. Первая срабатывает по тригеру при входе мыши в панель. Вторая запускается "принудительно" по движению мыши по форме.

Ссылка на комментарий
  • 0

Понятно, что костыль. Но что делать...

По поводу Вашего метода: думаю, что мой метод лучше тем, что в нем используется только одна анимация, а так же минимум кода. Я, кстати, всегда стараюсь писать как можно меньше кода, ибо есть золотое правило: чем сложнее механизм, тем более вероятно, что он сломается. Хотя может я и не прав :)

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...