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

Странное поведение TFloatAnimation на Android


dervish00

Вопрос

function Form1.GetPanel(paName: string):Tpanel;
begin
    Result := NIL;
    if AnsiUpperCase(paName) = 'PANEL1' then Result := Panel1;
    if AnsiUpperCase(paName) = 'PANEL2' then Result := Panel2;
end;

procedure Form1.Button1Click(Sender: TObject);
var
   FirstFMXObjName, SecondFMSObjName : string;
   pa : TPanel;

begin
   FirstFMXObjName := 'panel1';
   SecondFMSObjName := 'panel2';
//   pa := GetPanel(FirstFMXObjName);
   pa := Panel1; //раскомментировав пред. строку и закомментировав эту  - не работает
   if NOT Assigned(pa) then Exit;
   FloatAnimationHideFromRight2Left.Parent := pa;
   FloatAnimationHideFromRight2Left.Enabled := True;
   FloatAnimationHideFromRight2Left.PropertyName := 'Position.X';
   FloatAnimationHideFromRight2Left.StartFromCurrent := False;
   FloatAnimationHideFromRight2Left.StartValue := 0.0;
   FloatAnimationHideFromRight2Left.StopValue := -pa.Width;
//   pa := GetPanel(SecondFMSObjName);
   pa := Panel2; //раскомментировав пред. строку и закомментировав эту  - не работает
   if NOT Assigned(pa) then Exit;
   FloatAnimationShowFromRight2Left.Parent := pa;
   FloatAnimationShowFromRight2Left.Enabled := True;
   pa.Position.X := pa.Width;
   pa.Visible := True;
   FloatAnimationShowFromRight2Left.PropertyName := 'Position.X';
   FloatAnimationShowFromRight2Left.StartFromCurrent := False;
   FloatAnimationShowFromRight2Left.StartValue := pa.Width;
   FloatAnimationShowFromRight2Left.StopValue := 0.0;
   FloatAnimationHideFromRight2Left.Start;
   FloatAnimationShowFromRight2Left.Start;
end;

вот такой код. Под Windows и Android работает без проблем. Но если раскомментировать/закомментировать строки, которые подписаны в коде, то под Windows работает, а под Android - нет. А хотелось бы чтобы именно так работало (для универсальности). Пытался сделать через FindComponent и также под Windows все работало, а под Android выдавало Access Violation. Есть ли у гуру мысли, что происходит?

Изменено пользователем dervish00
логика в вопросе была неправильная
Ссылка на комментарий

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

  • 0

под андройд не работают Ansi функции, потому как там и строки совсем другие (нуль терминированные строки)

лучше наверное через хелпер для строк делать UpperCase, например так:

var
  s: string;
begin
  s := 'fdf';
  ShowMessage(s.UpperCase(s));
end;

если в чем не прав - поправьте =))

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

 

1 час назад, sinuke сказал:

под андройд не работают Ansi функции, потому как там и строки совсем другие (нуль терминированные строки)

лучше наверное через хелпер для строк делать UpperCase, например так:


var
  s: string;
begin
  s := 'fdf';
  ShowMessage(s.UpperCase(s));
end;

если в чем не прав - поправьте =))

Не работает. Даже безо всяких UpperCase - просто напрямую (что передал, с тем и сравниваю) не работает. Думается мне, что дело тут несколько глубже и связано с передачей параметров. Пока знаний по андроиду не хватает, пытаюсь найти инфу в сети... Просто хотелось сделать универсальный инструмент для смены панелек (их будет 6-8 штук) с плавной анимацией. Можно, конечно и в лоб описать все переходы, но как-то некрасиво.

Ссылка на комментарий
  • 0
25 минут назад, sinuke сказал:

Есть TAnimator.AnimateFloatWait - после вызова можно и панельку скрыть

Как видно из кода - мне нужно одновременно две панельки запускать (одна прячется, другая появляется). А AnimateFLoatWait пока не закончит работу - не даст запуститься второй анимашке.

 

На самом деле все решил - оказался такой страшный мой косяк, что аж стыдно... У меня в коде, как вы понимаете, чуть сложнее - имена панелек берутся из смерженной до этого строки с разделителями. Так я парсил эту строку под имена отдельные как раньше это делал под виндой (у меня куча процедурок и функций своих осталось со времен, когда активно кодил), а здесь не учел, что под андроидом строки с нуля начинаются, а не с 1-ки. Поправил - вроде все отрабатывает как положено и даже через FindComponent, т.е. не надо городить костылик с отбором панельки по имени...

Всем спасибо за участие и прошу прощения за свой косяк.

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

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