Як запустити анімацію з кнопки для іншого компонента запуск анімації вручну - fire monkey від а
У проекті кілька форм: є головна (меню) + ІСТОРІЯ (досить важка форма) + інші
завдання:
після натискання в МЕНЮ на кнопку, починається створення ІСТОРІЇ і в цей час програється FloatAnimation для обертання індикатора (це коло із зображенням).
потрібно по завершенню створення форми припинити анімацію і показати форму
Як роблю:
на головній формі є F: TForm; при створенні форми: F: = nil; при натисканні на кнопку: 1) стартує анімація 2) F: = TF_History.Create (nil); в процесі перевіряю створення форми (якщо створилася, то стоп) procedure TF_Main.FloatAnimation1Process (Sender: TObject);
begin
if Assigned (F) then FloatAnimation1.Stop;
end;
в стопі показую форму procedure TF_Main.FloatAnimation1Finish (Sender: TObject);
begin
F.Show;
end;
Помилка: додаток вилітає з помилкою "stack overflow"!
P.S. Не зовсім розумію де копати, та й якщо у кого є рішення краще, буду тільки радий!)
Друзі, зіткнувся з проблемою, описаною в пості
Хочу запропонувати своє рішення (може кому стане в нагоді).
Щоб центр масштабування був саме в центрі об'єкта (в моєму випадку це TImage), необхідно після масштабування встановити властивість Align = TAlignLayout.Center, причому до цього потрібно встановити його в TAlignLayout.None.
Приблизно ось так:
Image1.Scale.X: = 1.3;
Image1.Scale.Y: = 1.3;
Image1.Align: = TAlignLayout.None;
Image1.Align: = TAlignLayout.Center;
У цьому випадку буде ефект збільшення об'єкта з центру. Якщо прибрати рядок "Image1.Align: = TAlignLayout.None;" - збільшення буде з лівого верхнього кута. На мій погляд некоректну поведінку платформи. Можливо в майбутніх релізах це поправлять.
Embarcadero® Delphi 10.1 Berlin Update 2 Version 24.0.25048.9432
Вітання. Загалом у мене є з горем навпіл стилізований WindowBorder, на ньому є три кнопочки (закрити, згорнути, розгорнути відповідно). Для кожної з них в стилях встановлена зміна кольору при MouseOver = True, все прекрасно працює, колір змінюється при наведенні і повертається у вихідне стані при переміщенні миші на інший об'єкт. Але якщо швидко перемістити мишу наприклад з кнопки "Закрити" за межі форми, але не спрацьовує тригер MouseOver = FalseMouseOver, і кнопка залишається в "активному" стані до повернення миші в будь-яку частину форми. Чи є рішення цієї проблеми?
Заздалегідь дякую.
Всім здрастуйте!
Зіткнувся з такою проблемою. При зміні властивості AniFrameRate у одного об'єкта TFloatAnimation c дефолтних 60 до 10 або іншого меншого ніж 60 значення, все анімації на формі, а не тільки ця, починають гальмувати, як ніби цей параметр змінився для всіх анімацій, поки не поміняєш назад. Для великих 60 значень все нормально. ))
Питання: чому так відбувається?
Всім добрий день. Як правильно перевизначити батька для аніматора і тим самим використовувати один аніматор для декількох об'єктів?
Намагаюся реалізувати наступний принцип: на формі кілька прямокутників і один аніматор. При кліці по конкретному прямокутника він починає змінювати координату. Ось чаcть коду:
procedure TForm2.MoveRect (Rect: TRectangle); begin // задаємо батька для аніматора Rect.AddObject (AniMoveRect); // анімуємо координату Y прямокутника AniMoveRect.PropertyName: = 'Position.Y'; AniMoveRect.Inverse: = False; AniMoveRect.StopValue: = 0; AniMoveRect.Start; end; procedure TForm2.RectangleClick (Sender: TObject); begin MoveRect (Sender as TRectangle); end; В результаті анімується тільки один прямокутник - той, на який скликали в перший раз. Не можу зрозуміти, в чому проблема.
Дану тему Новомосковскл, але в ній, наскільки я зрозумів, мова йде про одночасне використання аніматора для двох об'єктів.
AniRects.zip
Редагую стиль, додаю до нього компонент TImage і для властивості RotateAngle створюю FloatAnimation (параметри анімації на скрині). Але при запуску ніякої анімації немає. Чому? І як все ж домогтися працездатності анімації для елемента стилю?
Добридень! Хочу зааніміровать Lable таким чином, щоб параметр Scale.X лінійно збільшувався. Але при цьому необхідно, щоб центр компонента залишався на своєму місці. А параметр Scale.X за початок відліку бере верхній лівий кут лейбла. Чи є можливість змінити центр масштабування компонента? Я це завдання вже вирішив шляхом додавання анімації зсуву вліво, але цей спосіб мені здається незграбним і неоптимальним.
Придумав як реалізувати ефект Анімація зміни TabItem в TabControl. але є питання - чи можна для двох об'єктів використовувати один TFloatAnimation? або реалізовувати через TTimer?
Як можна реалізувати простий ефект плавного зникнення тексту (TLabel) з подальшим його плавним появою без глюків?
приклад:
Кидаю на форму Label Створюю FloatAnimation для властивості Opacity У FloatAnimation роблю StartValue = 1, StopValue = 0 кидаю на форму кнопку і в OnClick пишу: FloatAnimation1.Start;
Результат: При натисканні кнопки текст плавно зникає і по завершенню анімації тексту не видно. У FloatAnimation роблю AutoReverse = true; Результат: При натисканні кнопки текст плавно зникає, а потім плавно з'являється. По завершенню анімації текст видно. Але при повторному натисканні все починає глючити.
Питання: як виправити?
Зараз на сторінці 0 користувачів
Немає користувачів, які переглядають цю сторінку