• 0
Котэ

убить окно вызванное showmodal

Вопросы

День добрый.

Делаю приложение клиент для android,  хотел узнать по поводу модального окна. 

Делаю форму входа. Использовал пример в showmodal из интернета. На форме входа два поля ввода, логин и пароль и кнопка вход. 

При нажатие на кнопку входа логин и пароль отсылаются на сервер и если все хорошо то форма входа должна закрыться. Но тут возникают проблемы из за особенностей реализации. 

Для работы с сетью использую tcpclient из набора indy. С него данные читаются в отдельном потоке. 

При нажатие кнопки вход приложение данные отсылаются на сервер, а потом в потоке передаются в обработчик данных. Так вот как из обработчика данных закрыть эту форму входа. Если она вызвана их другого кода.

Пытался писать процедуру

procedure frmLogin. CloseFrm();

begin

modalresult := mrok;

end;

но форма все равно продолжает висеть открытой.

з.ы. Блин  прочитал все что написал , похоже на бред.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 ответов на этот вопрос

  • 0

1) Зачем использовать модальное окно?

2) можно завести глобальную булевную переменную и по её результату отдавать ModalResult

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

закрывается форма как обычно Form.Close(), если из потока TThread то нужен Synchronize,

если этот поток создавала Indy то на С это будет TIdNotify::NotifyMethod с хедером #include "IdSync.hpp"

Изменено пользователем Камышев Александр

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

сделал через глобальную переменную  showmodal := mrok;

 все равно форма висит

код такой

var
  LogIn: TFrmLogin;
begin
  LogIn := TFrmLogin.Create(nil);
  LogIn.ShowModal(
    procedure(ModalResult: TModalResult)
    begin
      if ModalResult = mrOK then
      begin

      end;

    end);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

если я при нажатие на кнопку возвращаю modalresul:=mrok;

то форма закрывается.

а мне надо как то из сторонней функции убивать её

Изменено пользователем Котэ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

да. для этого случая совершенно нет необходимости делать showModal

да и при нажатии на кнопку нет необходимости делать асинхронность. лучше вариант показать Progress из библиотеки fgx и сделать все синхронно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

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