Kikoma Опубликовано 21 августа, 2014 Поделиться Опубликовано 21 августа, 2014 К программно созданному кастомизированному TListBoxItem при удалении (здесь обсуждается как удаляем) хочу добавить Анимацию: Сначала Opacity с 1 до 0, потом Height с текущего значения до 0. Через дизайн форму и инспектор объектов проблем нет, а программно? Ведь эти TListBoxItem-ы тоже программно создаются. Ссылка на комментарий
0 AngryOwl Опубликовано 22 августа, 2014 Поделиться Опубликовано 22 августа, 2014 (изменено) TListBoxItem(ваш_item).Animate('Opacity', 0, 0.5); TListBoxItem(ваш_item).AnimateWait('Height', 0, 0.5); и только после этого удаляйте. Но здесь может возникнуть ряд проблем. Во-первых - оптимально делать синхронизацию. Во-вторых - ввиду "ряда особенностей" FMX все может работать на Windows 8, но не будет работать (или будет, но с ошибками) на Windows 7. А на Windows XP вообще может себя повести в "3-ем варианте"... ) Более стабильно будет работать на Маке и на Android ))) Вот такие чудеса могут быть. Чтобы всего этого избежать, Вам нужно точно определить ту последовательность, которую Вы хотите воспроизвести и сделать синхронизацию. Например, как писал выше: TListBoxItem(ваш_item).Animate('Opacity', 0, 0.5); TListBoxItem(ваш_item).AnimateWait('Height', 0, 0.5); // тогда Animate для 'Opacity' и 'Height' выполнится параллельно // а вот следующая процедура выполнится только после окончания AnimateWait 'Height' TThread.Synchronize(TThread.CurrentThread, тут_ваша_процера_удаления_item); Думаю, что корректно описал - как. Но было бы более точно и правильно, если бы на ваш вопрос ответил непосредственно Ярослав Бровин. Он все-таки более компетентен. Изменено 25 августа, 2014 пользователем Brovin Yaroslav Отформатировал код Brovin Yaroslav, Alexey Lovchikov, eser и 1 другой 4 Ссылка на комментарий
0 Kikoma Опубликовано 24 августа, 2014 Автор Поделиться Опубликовано 24 августа, 2014 Спасибо, AlexG Opacity - работает. Height - не работает. Не уверен, но думаю из-за стилизации (попозже попробую на не стилизованном TlistBoxItem, результат опишу) При удалении вызывается ошибка. Подробности Как правильно программно удалить TListBoxItem из стилевого объекта? Ссылка на комментарий
0 AngryOwl Опубликовано 24 августа, 2014 Поделиться Опубликовано 24 августа, 2014 "Height - не работает" а в Вашем TListBox, в котором Вы меняете Item'ы, свойство ItemHeight случаем <> 0 ? В смысле - если ItemHeight <> 0, то изменение свойства Height для любого TListBoxItem работать не будет P.S. Вот простой пример, который только-что опробовал и он прекрасно работает именно так, как Вам нужно (удаляет выбранный элемент списка с анимацией) ... TListBoxItem(TListBox(Sender).Selected).AnimateFloat('Opacity', 0, 0.3); TListBoxItem(TListBox(Sender).Selected).AnimateFloatWait('Height', 0, 0.3); TListBox(Sender).Items.Delete(TListBox(Sender).Selected.Index); ... P.P.S. проверил - все работает и на Windows и на Android. корректно и с анимацией zairkz, Kikoma и Brovin Yaroslav 3 Ссылка на комментарий
0 Kikoma Опубликовано 25 августа, 2014 Автор Поделиться Опубликовано 25 августа, 2014 ... а в Вашем TListBox, в котором Вы меняете Item'ы, свойство ItemHeight случаем <> 0 ? .... Спасибо, все заработало. И как сам до этого не додумался??? Ссылка на комментарий
0 AngryOwl Опубликовано 25 августа, 2014 Поделиться Опубликовано 25 августа, 2014 Не за что. Удачи! zairkz и Brovin Yaroslav 2 Ссылка на комментарий
Вопрос
Kikoma
К программно созданному кастомизированному TListBoxItem при удалении (здесь обсуждается как удаляем) хочу добавить Анимацию:
Сначала Opacity с 1 до 0, потом Height с текущего значения до 0.
Через дизайн форму и инспектор объектов проблем нет, а программно? Ведь эти TListBoxItem-ы тоже программно создаются.
Ссылка на комментарий
5 ответов на этот вопрос
Рекомендуемые сообщения