alewka006 Опубликовано 20 апреля, 2015 Поделиться Опубликовано 20 апреля, 2015 Подскажите, пожалуйста, как сделать такие переходы между формами, чтобы при нажатии на Андроиде системной кнопки "Назад" можно было вернуться на предыдущую форму? Цитата Ссылка на комментарий
0 Belov.V. Опубликовано 20 апреля, 2015 Поделиться Опубликовано 20 апреля, 2015 Если на Андроиде в приложении Вы создаете новые формы ''newForm.Show" или newForm.ShowModal(procedure( ...., то кнопка "Назад" по умолчанию перемещает обратно между формами. Может быть имелось ввиду создание обработчика более сложного поведения внутри формы? В таком случае, при нажатии кнопки "Назад" (а так же "Menu") на форме срабатывает событие onKeyUp.Там-то и можно организовать обработку поведения: procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin ... // Обработка аппаратной клавиши "Back" if Key = vkHardwareBack then begin //ваш обработчик поведения .... Key := 0; // отмена стандартного действия xenon54, sviat9440 и Brovin Yaroslav 3 Цитата Ссылка на комментарий
0 alewka006 Опубликовано 20 апреля, 2015 Автор Поделиться Опубликовано 20 апреля, 2015 Спасибо за ответ. Попробую. Без этого обработчика при нажатии кнопки назад у меня приложение закрывается. Цитата Ссылка на комментарий
0 Belov.V. Опубликовано 20 апреля, 2015 Поделиться Опубликовано 20 апреля, 2015 Спасибо за ответ. Попробую. Без этого обработчика при нажатии кнопки назад у меня приложение закрывается. Точно? Может у Вас все же форма одна? Я даже поэкспериментировал на 3.2 и 4.4. Извините, пока железки с 5-м нет :-) Цитата Ссылка на комментарий
0 alewka006 Опубликовано 20 апреля, 2015 Автор Поделиться Опубликовано 20 апреля, 2015 Может разница в том что я использую Form1.Visible:=false; Form2.Visible:=true; Цитата Ссылка на комментарий
0 Belov.V. Опубликовано 20 апреля, 2015 Поделиться Опубликовано 20 апреля, 2015 В первом сообщении писал, что если 'новые формы ''newForm.Show" или newForm.ShowModal"...' Тогда да, только в обработчике нажатия клавиши анализировать состояние форм. Но по моему мнению (не для спора), Form1.Visible:=false; Form2.Visible:=true; не лучший стиль программирования. Для андроида в плане экономии ресурсов есть смысл создавать/убивать формы динамически. А если у Вас всего лишь панели интерфейса пользователя, и которые активно используются, то есть другие способы их отображения. Но все равно потребуется писать обработчик. Если без, то смотрите решение выше... Brovin Yaroslav 1 Цитата Ссылка на комментарий
0 sviat9440 Опубликовано 4 мая, 2015 Поделиться Опубликовано 4 мая, 2015 Если на Андроиде в приложении Вы создаете новые формы ''newForm.Show" или newForm.ShowModal(procedure( ...., то кнопка "Назад" по умолчанию перемещает обратно между формами. Может быть имелось ввиду создание обработчика более сложного поведения внутри формы? В таком случае, при нажатии кнопки "Назад" (а так же "Menu") на форме срабатывает событие onKeyUp.Там-то и можно организовать обработку поведения: procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin ... // Обработка аппаратной клавиши "Back" if Key = vkHardwareBack then begin //ваш обработчик поведения .... Key := 0; // отмена стандартного действия Спасибо, тоже пригодится, у меня в проекте одна форма и куча слайдов в TabControl, ума не мог приложить как сделать чтобы по кнопке назад оно возвращалось на главный слайд, ОГРОМНОЕ СПАСИБО! Цитата Ссылка на комментарий
0 alewka006 Опубликовано 27 мая, 2015 Автор Поделиться Опубликовано 27 мая, 2015 Подскажите, пожалуйста. Есть такой код: unit more; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, FMX.Layouts, FMX.Objects, FMX.WebBrowser; type TForm5 = class(TForm) Logo: TImage; Layout1: TLayout; WebBrowser1: TWebBrowser; SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; procedure FormCreate(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); private { Private declarations } public { Public declarations } end; var Form5: TForm5; implementation {$R *.fmx} uses main; procedure TForm5.FormCreate(Sender: TObject); begin logo.Width:=Form5.ClientWidth; logo.Height:=Form5.ClientWidth/2.8; WebBrowser1.Width:=Form5.ClientWidth-30; WebBrowser1.Height:=Form5.ClientHeight-30; end; procedure TForm5.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin // Обработка аппаратной клавиши "Back" if Key = vkHardwareBack then begin //ваш обработчик поведения WebBrowser1.Visible:=False; Key := 0; // отмена стандартного действия end; end; procedure TForm5.SpeedButton1Click(Sender: TObject); begin WebBrowser1.Visible:=True; end; end. При нажатии на кнопку на экране появляется браузер. При нажатии кнопки Назад на телефоне он скрывается. Но стоит прикоснуться к браузеру и обработчик перестает работать. Что можно сделать чтобы при любом раскладе при нажатии Назад браузер скрывался? Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 28 мая, 2015 Модераторы Поделиться Опубликовано 28 мая, 2015 попробуйте обработать кнопку в обработчике браузера, а не формы Цитата Ссылка на комментарий
0 alewka006 Опубликовано 28 мая, 2015 Автор Поделиться Опубликовано 28 мая, 2015 У браузера нет такого события Цитата Ссылка на комментарий
Вопрос
alewka006
Подскажите, пожалуйста, как сделать такие переходы между формами, чтобы при нажатии на Андроиде системной кнопки "Назад" можно было вернуться на предыдущую форму?
Ссылка на комментарий
9 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.