Прекратить редактирование после возврата формы showmodal

Я работаю над XE7 в Android v4.4.4.

У меня есть TEdit и TButton на форме1. Следующий мой шаг:

  1. Нажмите TButton, чтобы отобразить другую форму (Form2), используя ShowModal(...) или Show;
  2. Закрыть form2 по ModalResult:= mrOK или закрыть;

После того, как я вернусь в форму 1, TEdit не может редактировать и без курсора, когда я нажимаю на него. Я имею в виду, что VirtualKeyboard не появляется, когда я нажимаю на нее.

У кого есть такая проблема или что с ней не так.


person michael mok    schedule 08.01.2015    source источник
comment
привет, ребята, я сделал тест следующим образом,   -  person michael mok    schedule 08.01.2015
comment
Мы могли бы помочь вам намного эффективнее, если бы вы показали нам код, а не просто шаги.   -  person Jerry Dodge    schedule 08.01.2015


Ответы (2)


Вы не указываете, как вы вызываете модальную форму. Я могу только предположить, что вы что-то упустили в коде.

документация обновлена ​​в XE7, чтобы правильно вызывать модальную форму и закрывать ее после использования.

Из документации, как отобразить модальную форму:

procedure MyCurrentForm.MyButtonClick(Sender: TObject);
var
  dlg: TMyModalForm;
begin
  // Create an instance of a form.
  dlg := TMyModalForm.Create(nil);

  // Configure the form. For example, give it a display name.
  dlg.Caption := 'My Modal Dialog Box';

  // Show your dialog box and provide an anonymous method that handles the closing of your dialog box.
  dlg.ShowModal(
    procedure(ModalResult: TModalResult)
    begin
      // Do something.
    end
  );
end;

Из документации, как освободить модальный диалог:

Вы не можете освободить память, выделенную для формы модального диалогового окна, в методе, который обрабатывает закрытие формы модального диалогового окна. Чтобы освободить форму модального диалогового окна, вы должны обработать ее событие OnClose следующим образом:

procedure TMyModalForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := TCloseAction.caFree;
end;
person LU RD    schedule 08.01.2015

Скорее закройте Form2 следующим образом:

Form2.hide;

Скорее всего, фокус все еще будет на Form2, когда вы вернетесь к form1.

При отображении другой формы я всегда делаю так:

Добавьте это к кнопке, которая должна привести вас к Form2

Form1.hide;
Form2.show;

Добавьте это к событию OnClose формы2:

Form2.hide;
form1.show;

Это никогда не подводило меня раньше

person Jean-Michele Groenewald    schedule 30.09.2017