krapotkin Опубликовано 10 июля, 2015 Опубликовано 10 июля, 2015 Если я из формы 1 вызову форму 2, из нее перейду к форме 3, то при нажатии Back я вернусь к форме 2. Если форма 2 была, например, формой ввода пароля, то нужно возвращаться прямо к форме 1. Как это делать в FMX? Цитата
0 Martifan Опубликовано 10 июля, 2015 Опубликовано 10 июля, 2015 я думаю не сложно какой нибудь условия написать если что то не открывай форма пароля Цитата
0 krapotkin Опубликовано 10 июля, 2015 Автор Опубликовано 10 июля, 2015 и делать Close в FormShow совсем плохой костыль Цитата
0 Martifan Опубликовано 10 июля, 2015 Опубликовано 10 июля, 2015 тогда используй TabControl и листай между табами Цитата
0 krapotkin Опубликовано 10 июля, 2015 Автор Опубликовано 10 июля, 2015 это тот же костыль - и требует он формирования явного дерева состояний и перехвата и переопределения системных кнопок во всех формах в Android уже есть эта функциональность, нужно только узнать, как ей воспользоваться Цитата
0 kami Опубликовано 10 июля, 2015 Опубликовано 10 июля, 2015 Если форма 2 была, например, формой ввода пароля, то нужно возвращаться прямо к форме 1. Как это делать в FMX? Так удалите эту форму вообще. Судя по тому, что я накопал - у FMX свой механизм определения активной формы. Смотреть function TScreen.NextActiveForm Brovin Yaroslav 1 Цитата
0 Администраторы Brovin Yaroslav Опубликовано 10 июля, 2015 Администраторы Опубликовано 10 июля, 2015 Я бы сделал просто свой стек с формами. Открываеся форма, добавляем ее в стек. Для каждоый формы реализовал бы метод, типа function NeedShow: Boolean; При закрытии формы 3, убираем ее из стека, и проверяем NeedShow у предыдущей формы, и так далее, пока не появится форма, которую можно показывать. Цитата
0 kami Опубликовано 10 июля, 2015 Опубликовано 10 июля, 2015 и делать Close в FormShow совсем плохой костыль Так не делайте там Close. Показывайте форму3, а форму2.Release. Цитата
0 krapotkin Опубликовано 10 июля, 2015 Автор Опубликовано 10 июля, 2015 You can implement this from your AndroidManifest.xml file, just adding[android:noHistory=true] attribute in those <activity> you want. выглядит более простым, правда же? вот и хочу найти, как это сделать Цитата
0 Администраторы Brovin Yaroslav Опубликовано 10 июля, 2015 Администраторы Опубликовано 10 июля, 2015 Это не будет работать. Так как форма FMX не имеет никакого отношения к активити. Поэтому этот аттрибут не поможет вам. Так же этот флаг используется, чтобы осуществить навигацуию между разными активити, а в не внутри одного. kami 1 Цитата
0 krapotkin Опубликовано 10 июля, 2015 Автор Опубликовано 10 июля, 2015 ок, т.е. нужно найти стек, который создается в FMX он же есть? форму я создаю TMyForm.Create(NIL).Show в OnClose стоит Action:=caFree, т.е. по идее, она должна разрушиться при показе следующей формы но back приводит к ней, значит создается заново Цитата
0 kami Опубликовано 10 июля, 2015 Опубликовано 10 июля, 2015 Логика несколько хромает. Код в OnClose - это хорошо. А кто будет делать этой форме Close? Показ новой формы не закрывает текущую. Цитата
0 Администраторы Brovin Yaroslav Опубликовано 10 июля, 2015 Администраторы Опубликовано 10 июля, 2015 Например, у нас есть 3 формы MultipleForms.zip Главная (Form1) Форма ввода пароля (Form2) Третья форма (Form3) Form2 в момент открытия Form3 должна поставить себя в очередь на самоудаление (Release). Чтобы когда откроется Form3, Form2 была уже разрушена. В этом случае после закрытия Form3, вы вернетесь в Form1. Код открытия Form3 из Form2: procedure TForm2.Button2Click(Sender: TObject); begin Form3.Show; Release; end; procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := TCloseAction.caFree; end; krapotkin и Kitty 2 Цитата
0 haword Опубликовано 13 июля, 2015 Опубликовано 13 июля, 2015 зачем такие бубны. просто не надо вызывать из 2 формы третью и все. возвращай первой форме вызов со второй, и потом в первой форме вызывай третью. тогда при закрытии третей формы перейдешь к первой. krapotkin 1 Цитата
Вопрос
krapotkin
Если я из формы 1 вызову форму 2, из нее перейду к форме 3, то при нажатии Back я вернусь к форме 2.
Если форма 2 была, например, формой ввода пароля, то нужно возвращаться прямо к форме 1.
Как это делать в FMX?
13 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.