Jump to content

Запрос и подтверждение закрытия мобильной формы


x11

Recommended Posts

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

Как правильно в событии UnimFormClose показать окно с кнопками Да/Нет?

 Если пользователь ввел данные и случайно нажал на кнопку закрытия окна, как запросить у пользователя подтверждение?

Link to comment
Share on other sites

  • 3 weeks later...
On 10/9/2020 at 6:05 PM, x11 said:

Как правильно в событии UnimFormClose показать окно с кнопками Да/Нет?

UniMainModule.EnableSynchronousOperation = True - это один из способов:

procedure TMainmForm.UnimFormClose(Sender: TObject; var Action: TCloseAction);
begin
  if MessageDlg('Вы действительно хотите закрыть окно?', mtConfirmation, [mbYes, mbNo]) <> mrYes then
    Action := caNone

end;

http://unigui.com/doc/online_help/synch-and-asynch-operations.htm

Link to comment
Share on other sites

В uniMainModule есть свойство BackButtonAction.

Т.е. когда нажимаешь кнопку Назад в браузере, то появляется подтверждающий диалог, где можно нажать Отмена.

Это я к тому, что у uniGui какой-то механизм диалогов подтверждения есть?

 

Может быть можно придумать что-то с callback-функцией?

  • Upvote 1
Link to comment
Share on other sites

Вроде бы получилось

 

...
  private
    bAllowClose: boolean; // по умолчанию False 
...
...
procedure TfmmParentObject.UnimFormClose(Sender: TObject; var Action: TCloseAction);
begin
  if bAllowClose then
  begin
    Action := caFree;// когда вызвали закрытие через CloseCallbackAnonProc
    exit;
  end
  else
    Action := caNone;// ничего не делать

  MessageDlg('Закрыть окно', mtWarning, mbYesNo, CloseCallbackAnonProc);
end;

procedure TfmmParentObject.CloseCallbackAnonProc(Sender: TComponent; Res: Integer);
begin
  if Res = mrYes then
  begin
    bAllowClose := True;
    close;// снова вызываем закрытие окна
  end;
end;

Было бы хорошо, если бы у форм были какие-то встроенные свойства.

Link to comment
Share on other sites

стандартная тема triton, стандартный диалог MessageDlg() - шрифт заголовка великоват или полоса заголовка слишком мала - некрасиво

Screenshot_33.jpg

Link to comment
Share on other sites

Нашел. Это я уменьшал заголовки unimPanel.

Получается, что в uniGUI заголовок unimPanel связан с заголовком диалоговых окон. Вы считаете, что так правильно? Совершенно разные ведь компоненты.

Как-то нелогично применять x-panelheader к заголовку окна, по моему скромному мнению.

Screenshot_34.jpg

Link to comment
Share on other sites

хм... и зачем они так сделали? ну ок.

В общем, исправил у себя

/*высота заголовка панелей*/
.x-big .x-panelheader.x-horizontal.x-noborder-trl {
    min-height: 10px;
    height: 20px;
}

добавил ".x-noborder-trl"

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...