dervish00 Posted May 24, 2021 Share Posted May 24, 2021 (edited) Скрытый текст class procedure TfgAnimationHelper.HideForm(const AForm: TObject; const AOptions: TfgAnimationOptions; const ADuration: Integer; const AFinishCallback: TfgCallback); var LDuration: Integer; LForm: TfgCustomForm; {$IFDEF IOS} LAnimation: TfgAnimation; LNewTopForm: TfgCustomForm; {$ENDIF} begin TfgAssert.IsNotNil(AForm, 'AForm'); TfgAssert.IsClass(AForm, TfgCustomForm); LForm := TfgCustomForm(AForm); if LForm <> TfgFormManager.Current.TopMost then begin LForm.Hide; if Assigned(AFinishCallback) then AFinishCallback; Exit; end; if ADuration = PlatformDuration then LDuration := TfgAnimationManager.ShortAnimationDuration else LDuration := ADuration; {$IFDEF IOS} LNewTopForm := TfgFormManager.Current.PreviousTopMost; LAnimation := LForm.AnimationManager.AddTranslationAnimation(TPointF.Zero, TPointF.Create(LForm.Width, 0), LDuration); LAnimation.Options := AOptions + [TfgAnimationOption.ReleaseAnimationOnFinish]; LAnimation.OnFinishCallback := procedure begin LForm.Hide; if Assigned(AFinishCallback) then AFinishCallback; end; LAnimation.Start; if LNewTopForm <> nil then begin LAnimation := LNewTopForm.AnimationManager.AddTranslationAnimation(TPointF.Create(-LNewTopForm.Width / 3, 0), TPointF.Zero, LDuration); LAnimation.Options := [TfgAnimationOption.ReleaseAnimationOnFinish]; LAnimation.Start; end; {$ELSE} LForm.Show; &Out(LForm, TfgAnimationInOutMode.LeftToRight, AOptions, LDuration, procedure begin LForm.Hide; if Assigned(AFinishCallback) then AFinishCallback; end); {$ENDIF} end; При вызове процедуры HideForm из-за вызова LForm.Show (после {$ELSE}) у меня крашится приложение с ошибкой "Component with name ... already exist", т.к. на форме есть компоненты, которые создаются в рантайме в обработчике формы OnShow. На предыдущей версии библиотеки этого не было. Сделал копию файла FGX.Animation с закомментированным вызовом LForm.Show - всё работает. Edited May 24, 2021 by dervish00 Link to comment Share on other sites More sharing options...
Administrators Yaroslav Brovin Posted May 24, 2021 Administrators Share Posted May 24, 2021 Добрый день, Какая платформа? Какая версия IDE используется? Демо проект? В каком месте вы создаете компоненты в рантайме? Спасибо Link to comment Share on other sites More sharing options...
dervish00 Posted May 24, 2021 Author Share Posted May 24, 2021 1. Android 2. 10.4 3. Демо проект практически нереально - очень много времени понадобится. 4. Создаются кнопки в обработчике OnShow Link to comment Share on other sites More sharing options...
Administrators Yaroslav Brovin Posted May 24, 2021 Administrators Share Posted May 24, 2021 3 минуты назад, dervish00 сказал: 4. Создаются кнопки в обработчике OnShow При каждом отображении формы вызывается ее обработчик OnShow. Собственно, если вы кнопки создаете в OnShow, то вы их создаете на каждого отображение формы. Что не верно. Их надо создать один раз, например в конструкторе или в событии OnCreate. Link to comment Share on other sites More sharing options...
Administrators Yaroslav Brovin Posted May 24, 2021 Administrators Share Posted May 24, 2021 Хотя, я понял в чем дело. Посмотрим. Как минимум не должно быть вызова отображения формы при ее скрытии. Разберемся с этим. Но и создание компонентов в любом случае не надо делать в OnShow. Link to comment Share on other sites More sharing options...
dervish00 Posted May 24, 2021 Author Share Posted May 24, 2021 Это фрейм. Он каждый раз уничтожается и показывается, когда необходим. Т.е. нет ситуации, когда он мог бы показываться без уничтожения. Я HideForm вызываю с опцией ReleaseControlOnFinish Link to comment Share on other sites More sharing options...
Administrators Yaroslav Brovin Posted May 24, 2021 Administrators Share Posted May 24, 2021 Ok, посмотрим к следующему релизу. Link to comment Share on other sites More sharing options...
Administrators Yaroslav Brovin Posted May 24, 2021 Administrators Share Posted May 24, 2021 Сделал тикет: Link to comment Share on other sites More sharing options...
Administrators Viktor Akselrod Posted May 25, 2021 Administrators Share Posted May 25, 2021 Исправлено в 1.11.1.0. Link to comment Share on other sites More sharing options...
Recommended Posts