Steepe_Hare Опубликовано 27 ноября, 2016 Поделиться Опубликовано 27 ноября, 2016 Представим, что нам нужно получить от пользователя определенную информацию, чтобы продолжить работу. На Windows делал так и всё было отлично: with TForm3.Create(Application) do try if (ShowModal = mrOK) then MakeSomething(StrToInt(SpinBox1.Text), StrToInt(SpinBox2.Text)); finally Free; end; На Андроиде получаю: Project project1.apk raised exception class ENotImplemented with message 'ShowModal not implemented on this platform'. ОК, поменяем ShowModal на Show, но как узнать, что пользователь нажал OK, а не отказался?? Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 27 ноября, 2016 Модераторы Поделиться Опубликовано 27 ноября, 2016 Steepe_Hare 1 Цитата Ссылка на комментарий
0 Steepe_Hare Опубликовано 27 ноября, 2016 Автор Поделиться Опубликовано 27 ноября, 2016 1 час назад, ZuBy сказал: интересное решение, спасибо Цитата Ссылка на комментарий
0 Steepe_Hare Опубликовано 27 ноября, 2016 Автор Поделиться Опубликовано 27 ноября, 2016 1 час назад, ZuBy сказал: у вас TfrmLogin создается вручную. Нужно ли ей где-то делать Free? Или память сама освободится после закрытия приложения? Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 27 ноября, 2016 Модераторы Поделиться Опубликовано 27 ноября, 2016 42 минуты назад, Steepe_Hare сказал: у вас TfrmLogin создается вручную. Нужно ли ей где-то делать Free? Или память сама освободится после закрытия приложения? без разницы, можете прописать в OnClose формы авторизации Action := TCloseAction.caFree; или оставить без изменении, при завершении приложения форма удалится автоматически Цитата Ссылка на комментарий
0 Steepe_Hare Опубликовано 27 ноября, 2016 Автор Поделиться Опубликовано 27 ноября, 2016 3 часа назад, ZuBy сказал: вы знаете, я обнаружил, что пока не отработает код внутри frmLogin.Show( procedure begin ... end); то второе окно не закроется( Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 27 ноября, 2016 Модераторы Поделиться Опубликовано 27 ноября, 2016 33 минуты назад, Steepe_Hare сказал: вы знаете, я обнаружил, что пока не отработает код внутри frmLogin.Show( procedure begin ... end); то второе окно не закроется( Нужно поменять в форме авторизации последовательность, сначала закрытие потом выполнение анонимной процедуры. Я не проверял, но попробуйте Steepe_Hare 1 Цитата Ссылка на комментарий
0 Камышев Александр Опубликовано 28 ноября, 2016 Поделиться Опубликовано 28 ноября, 2016 в главной форме объявить void __fastcall OnOptFormReady(TObject *Sender); в вызываемой форме private: // User declarations TNotifyEvent FOnReady; public: // User declarations __property TNotifyEvent OnReady = { read = FOnReady, write = FOnReady }; показать форму if ( !fmLogin ) fmLogin = new TfmLogin(this); fmLogin->OnReady = OnOptFormReady; #ifdef WIN32 fmLogin->ShowModal(); #else fmLogin->ShowFullScreenIcon = true; fmLogin->Show(); #endif по кнопкам в "модальном" окне вызвать событие: Close(); ModalResult = mrOk; // если ок if ( FOnReady ) FOnReady( (TObject*)this ); и обработка callback: void __fastcall TForm1::OnOptFormReady(TObject *Sender) { if ( Sender == fmLogin ) { if ( fmLogin->ModalResult != mrOk ) return; ApplySettings(); } код получается кроссплатформенный Равиль Зарипов (ZuBy) и Kitty 2 Цитата Ссылка на комментарий
Вопрос
Steepe_Hare
Представим, что нам нужно получить от пользователя определенную информацию, чтобы продолжить работу.
На Windows делал так и всё было отлично:
with TForm3.Create(Application) do try if (ShowModal = mrOK) then MakeSomething(StrToInt(SpinBox1.Text), StrToInt(SpinBox2.Text)); finally Free; end;
На Андроиде получаю:
Project project1.apk raised exception class ENotImplemented with message 'ShowModal not implemented on this platform'.
ОК, поменяем ShowModal на Show, но как узнать, что пользователь нажал OK, а не отказался??
Ссылка на комментарий
7 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.