问题标签 [non-modal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
64 浏览

winforms - 将非模态子 Windows.Forms.Form 添加到阻止子接收焦点的主窗体的问题

前言(可能会在发布答案后被删除)。这是一个我在网上任何地方都找不到答案的问题(经过几天的搜索)。我自己通过试错找到了答案,但我对主题 - 形式并不特别熟悉,所以我的解决方案可能不是最好的,甚至不是正确的。

我使用 Windows 窗体创建了一个小型应用程序。应用程序进行一些(冗长的)数据处理,它需要第二个单独的窗口来显示(持续的)错误。为此,我使用了(简单的)非模态形式。

结构相当简单:

这里的基本思想是NonModalInfo表单用于mainForm向用户显示日志记录和/或错误信息。正如我所拥有的,上面的结构完美地工作。问题是我在上面评论为Then, this critical line:. 没有那行 - 这是我最初编写代码的方式 - 代码几乎可以工作:非模态表单被打开、显示、更新等。问题是非模态表单永远无法获得焦点:任何尝试单击非模态表单以使其聚焦导致mainForm闪烁并保持焦点。这种行为正是人们在mainForm模态打开时所期望的,因此非模态表单无法获得焦点。

现在,mainForm 正在打开模态ShowDialog()(子对话框应该能够接收焦点。此外,简单地确保成员数据元素m_infoBox是用 的某个实例初始化的NonModalInfo,那么行为是不同的:子窗体将被赋予焦点,没问题。从外观上看,在m_infoBox显示 之前使用非空实例初始化的情况下mainFormmainForm似乎显示为非模态(尽管已显示ShowDialog())。

我的问题是,为什么我需要确保mainForm' 的成员m_infoBox是用非空实例初始化的?有什么方法可以构造mainForm和“显示”它,这样当我构造、添加和显示非模态孩子时,孩子可以接收焦点?哪里有这方面的文件?上面的代码实际上是正确的方法吗?谁能解释引擎盖下发生了什么?

编辑:事实上,情况比这更复杂。如果子非模态窗体在显示父级时可见,则父级将是“模态”的,子级将无法获得焦点。如果子窗体在显示父窗体之前已将其所有者设置为父窗体,则在尝试显示父窗体时会引发异常。我找不到关于所有这些问题的像样的文档。

0 投票
0 回答
441 浏览

ios - 如何像这样在 IOS 中实现非模态对话框(附图)?

问题:如何最好地在 IOS 中实现这样的非模态对话框(附图)?允许仍然拖动移动地图并选择(长按)另一个位置,然后在弹出的“非模态”对话框中填充该详细信息。对话框可以具有“删除”/“添加到收藏夹”等功能。

澄清:

  • 我在问如何在我标记为“非模态弹出窗口”的图像中实现对话框
  • 所以对于 iPad/水平常规情况,我突出显示对话框将与右侧的 ViewController 相关联,因此在这种情况下,用户仍然可以在 VC2 中拖动地图,但也可以访问/使用 VC1

一些笔记是我的思考:

  • UIViewController.present 不能在这里使用,因为它是模态的吗?如果可以使用什么设置来使其正常工作?
  • 您不建议使用(a)单独的 UIViewController 来实现,并使用手动添加 UIViewController 的方式显示它,或者(b)在这种情况下将其保留为 UIView 更好吗?在任何一种情况下,都必须以编程方式进行任何调整?

非模态对话要求

0 投票
1 回答
1282 浏览

javascript - 如何创建非模态 React 对话框?

我正在开发一个在nwjs下运行的基于javascript React的应用程序。

我的任务是:单击按钮时,在对话框中显示可滚动的说明,用户可以将其拖到第二个监视器上,这样他们就可以按照我的新对话框中的说明在主窗口中完成工作。

我只知道如何用 React 制作模态对话框。如何制作非模态对话框,以便用户在主窗口中工作时可以根据需要滚动浏览说明?

0 投票
2 回答
379 浏览

qt - QDialog 中的 Escape 仅在模态模式下有效?

Esc在非模态模式下对我的对话框不起作用,事件将转到底层窗口。只添加

到创建对话框使Esc键工作并调用reject()插槽。Esc进入/退出非模态对话框是否正常或可能?

0 投票
1 回答
89 浏览

parent-child - 自定义无模式对话框类不可见

我想制作一个带有标签和 QDialogBu​​ttonBox 的自定义非模态对话框类。我看过很多帖子,但似乎没有一个是真正的。我的代码如下。两个问题: 1. 为什么对话框类不显示任何内容?2. QDialogBu​​ttonBox 的连接看起来正确吗?

任何帮助,将不胜感激。谢谢!

0 投票
0 回答
17 浏览

wpf - wpf确定对话框显示类型?

我在一个 WPF 项目中有一个窗口,它在几个不同的地方使用。根据用途,我希望能够将其显示为模态(ShowDialog())或非模态(Show())。当在 UI 上单击特定按钮时,如果它是非模态的,它应该触发一个事件,但如果它是模态的,则返回一个对话框结果。

我的问题; 有没有办法在窗口代码中确定它是如何显示的?我知道如果您尝试设置对话框结果(如果它是非模态的)则会出现异常,但我宁愿不尝试捕获异常。

我可以设置一个简单的布尔属性,我可以手动设置它来告诉我它是什么。不难,所以如果这是唯一的方法,我可以这样做,但是不必每次都记住设置该值会很好。

0 投票
1 回答
393 浏览

mfc - MFC 对话框显示在任务栏中

我有一个使用来自两个 DLL 的对话框的应用程序。两个 DLL 中的对话框代码几乎相同:

  1. 两个对话框在 RC 文件中具有相同的样式:DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU.
  2. 两个对话框都使用 显示ShowWindow(SW_SHOW)
  3. 这两个对话框都是按需创建的,而不是在应用程序启动时创建的。
  4. 两个对话框都有一个 NULL 父级。
  5. 两个对话框都继承自 CDialog。

唯一的区别是:

  1. 在对话框 A 中,AFX_MANAGE_STATE()在对话框构造函数之前调用,而对于对话框 B,它在构造函数的开头调用。

我认为这些差异中的任何一个都不会产生任何影响,但是,当我显示对话框时,对话框 A 在任务栏和对话框 B 中没有图标,此外,将主窗口放在前面会带来对话框A 在前面(反之亦然),而对话 B 独立运行。

我想让对话框 B 的行为类似于对话框 A。谁能告诉我为什么存在这种行为差异以及如何解决它以使对话框 B 的行为与 A 相同?

我知道您会喜欢示例代码,但这需要一些时间(我没有)来制作。现有的代码都是公司商业的,也是一个巨大的应用程序,从中提取关键部分确实非常困难。

** 更新 ** 如果我::AfxGetMainWnd()在调用之前调用对话框 B 的委托人,我AFX_MANAGE_STATE()可以获得指向主窗口指针的指针。耶!当我将它传递给Create()时,程序崩溃了。嘘!

看起来我无法将主窗口设置为对话框 B 的所有者,我认为这可以解决我的问题,大概是因为对话框 B 在 DLL 中。我不明白为什么这适用于对话 A。

0 投票
1 回答
887 浏览

delphi - 显示异步“等待”窗口

在 Delphi VCL 应用程序中,我想创建一个“等待”消息窗口,因为这是一个耗时的过程(本例中的一个大循环)。

在开始耗时的过程之前,我尝试了以下要执行的操作。

- 创建一个包含消息的简单窗口的新形式。

- 使用 messagedlg 创建一条消息。

- 甚至更改主表单上的 TLabel.Caption(执行耗时过程的表单)。

在 {1} 和 {2} 的情况下,弹出表单出现在耗时的过程开始之前,但它们的组件仅在完成后才绘制。

情况 {3} 保持执行,直到模式对话框关闭。

如果{4}在耗时的过程完成后标题会发生变化。

如何异步创建消息,使其完全绘制而不等待其父进程?

0 投票
1 回答
188 浏览

javascript - 有非模态对话框时如何专注于主页输入元素?

我的情况是:非模态对话框内部有输入,点击外部时不关闭

当非模态对话框打开时,我无法专注于主页中的输入。当我单击主页中的输入时,焦点会跳转到对话框中的第一个输入

我试过 mainPageInput.focus() 不工作。我也先尝试了 dialogInput.blur() 然后 mainPageInput.focus() 仍然无法正常工作

它们的 tabIndex 默认为“0”

0 投票
1 回答
915 浏览

javascript - 如何显示非模态/非模态 HTML/JavaScript 对话

我从 w3schools 上的示例创建了一个模态对话。但是我一直无法找到有关如何使其成为非模态的指导。即是否可以显示对话并且我仍然可以在后台按下链接?

实际上,我想要实现的是允许对话内的链接是可点击的,并允许其后面的主页上的 JavaScript 对这些事件做出反应。