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 логика в вопросе была неправильная
Вопрос
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логика в вопросе была неправильная
Ссылка на комментарий
9 ответов на этот вопрос
Рекомендуемые сообщения