- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
什么是TApplication.Handle
?
TApplication.Handle
Provides access to the window handle of the main form (window) of the application.
property Handle: HWND;
Description
Use Handle when calling Windows API functions that require a parent window handle. For example, a DLL that displays its own top-level pop-up windows needs a parent window to display its windows in the application. Using the Handle property makes such windows part of the application, so that they are minimized, restored, enabled and disabled with the application.
MainForm
的窗 Handlebars 的Application
Application.MainForm.Handle: 11473728
Application.Handle: 11079574
Application.Handle
?
Application
的 Windows® 窗口句柄的 MainForm
,那他们为什么不匹配呢? Application
的窗 Handlebars 的 MainForm
, 那这是什么? null
,
Peter Below in 2000 said :
This can cause some problems with modal forms shown from secondary forms.
If the user switches away from the app while a modal form is up, and then back to the form that showed it, the modal form may hide beneath the form. It is possible to deal with this by making sure the modal form is parented [sic; he meant owned] to the form that showed it (using
params.WndParent
as above)But this is not possible with the standard dialogs from the
Dialogs
unit and exceptions, which need more effort to get them to work right (basically handlingApplication.OnActivate
, looking for modal forms parented to Application viaGetLastActivePopup
and bringing them to the top of the Z-order viaSetWindowPos
).
WS_EX_APPWINDOW
,强制一个窗口出现在任务栏上(当使其成为非所有者的正常规则不足、不切实际或不可取时)。扩展样式:
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams( params );
Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
end;
If you click on a secondary forms taskbar button while another app is active this will still bring all the applications forms to front. If you do not want that there is option
Application.Handle
时,谁将所有表单带到前面.是
申请这样做?为什么要这样做?而不是这样做,不应该
不是 在做这个吗?
的缺点是什么不是 这样做;我看到了
的缺点做 它(系统菜单无法正常工作,任务栏按钮缩略图不准确,Windows® shell 无法最小化窗口。
Application
的帖子中,
Mike Edenfield says that the parent window sends other window's their minimize, maximize and restore messages :
This will add the taskbar button for your form, but there are a few other minor details to handle. Most obviously, your form still receives minimize/maximize that get sent to the parent form (the main form of the application). In order to avoid this, you can install a message handler for WM_SYSCOMMAND by adding a line such as:
procedure WMSysCommand(var Msg: TMessage); WM_SYSCOMMAND;
procedure TParentForm.WMSysCommand(var Msg: TMessage);
begin
if Msg.wParam = SC_MINIMIZE then
begin
// Send child windows message, don't
// send to windows with a taskbar button.
end;
end;Note that this handler goes in the PARENT form of the one you want to behave independantly of > the rest of the application, so as to avoid passing on the minimize message. You can add similar > code for SC_MAXIMIZE, SC_RESTORE, etc.
Application
“拥有”。 ?这是否意味着让所有者为空:
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.WndParent := 0; //NULL
end;
Application
它的窗口句柄干扰了我的表单,Windows 应该再次向我发送我的最小化/最大化/恢复消息吗?
Application
对象,它是主循环。
Application
对象解决? 最佳答案
应用程序窗口的原因有一点肮脏的历史。在开发 Delphi 1 时,我们知道我们想要为 IDE 使用“SDI”(分散在桌面各处的窗口)ui 模型。我们也知道 Windows 在那个模型上很糟糕(现在仍然如此)。但是我们也注意到,当时的 Visual Basic 使用了该模型,而且它似乎运行良好。经过进一步检查,我们发现 VB 使用了一个特殊的“隐藏” parking 窗作为“所有者”(Windows 有时会模糊父和所有者的概念,但区别类似于 VCL)用于所有其他可见窗口.
这就是我们解决包含主菜单的窗口很少聚焦的“问题”的方法,因此处理文件菜单的 Alt-F 根本不起作用。通过使用这个中央 parking 窗口作为中介,我们可以更轻松地跟踪消息并将其路由到适当的窗口。
这种安排还解决了另一个问题,即通常多个顶级窗口是完全独立的。通过让应用程序处理所有这些窗口的“所有者”,它们的行为都会一致。例如,您可能已经注意到,当您选择任何应用程序窗口时,所有应用程序窗口都会移到最前面,并保持彼此的 z 顺序。这也将使应用程序最小化并恢复为功能分组。
这是使用这个模型的结果。我们本可以手动完成所有这些工作以保持一切正常,但设计理念不是重新发明 Windows,而是尽可能地利用它。这也是为什么 TButton 或 TEdit 实际上分别是 Windows“用户”按钮和编辑窗口类和样式的原因。
随着 Windows 的发展,“SDI”模型开始失宠。事实上,Windows 本身开始变得“敌视”这种应用程序风格。从 Windows Vista 开始并继续到 7,用户 shell 似乎不适用于使用 parking 窗口的应用程序。因此,我们开始在 VCL 中进行调整,以消除 parking 窗口并将其功能移至主窗体中。这提出了几个“鸡与蛋”问题,即我们需要在应用程序初始化时足够早地让 parking 窗口可用,以便其他窗口可以“附加”到它,但主窗体本身可能不会很快构建。 TApplication 必须跳过几个环节才能使其正常工作,并且有一些微妙的边缘情况导致了问题,但大多数问题都已解决。但是,对于您前进的任何应用程序,它将继续使用旧的 parking 窗模型。
关于Delphi:什么是 Application.Handle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2204804/
请在标记为重复之前阅读。 我正在创建一组依赖智能卡进行身份验证的应用程序。到目前为止,每个应用程序都单独控制智能卡读卡器。几周后,我的一些客户将同时使用多个应用程序。因此,我认为创建一个控制身份验证过
我想设置一个小程序,从数据库中检索信息,然后根据请求将该信息分发给另一个程序。例如,一个名为“Master”的程序将从数据库中检索数据并创建一个对象集合(列表、数组等,无论哪种效果最好),然后一个名为
我有两台电脑,都装有 XE2。我以为我在两者上安装了相同的安装,但在其中一个上安装第 3 方软件包时遇到问题,而另一个则正常。 无论如何,我希望两者都一样。最简单的人可能只是通过移入我的 Dropbo
有冲突吗? 最佳答案 所有新版本的 Delphi 始终可以安全地安装到旧版本的下一个版本。 每个新版本都应安装在其自己的目录中。 如果您要安装多个版本,请始终先安装最旧的版本,然后再安装最新版本。 我
快速提问:如果我从代码中删除 // 或 (* *) 中的注释,Delphi 2007 的执行时间会受到影响吗?最终结果是一个可能包含数千行注释的 EXE 文件。 最佳答案 编译器会简单地忽略注释,并且
我必须对照另一个文件检查文件的每一行。 如果第二个文件中存在第一个文件中的一行,则必须删除它。 现在,我正在使用2个列表框,并且“对于listbox1.items.count-1可以开始...” 我的
我正在尝试在访问数据库中添加一些数据。但是我有麻烦,因为这会返回错误: ADOQuery1 missing sql property 实现了对代码的几次修改,到目前为止没有任何效果。 我究竟做错了什么
我用Delphi 5编写了一个程序,在Windows 8 32位PC上可以正常运行。我发现在Windows 7 64位笔记本电脑上运行它最终会导致reallocmem错误,而该错误在32位PC上不会发
看来这是我需要的工具,用于提取XML并与TClientDataset连接。我已经在几篇文章和文档中看到了它,但是我无法在XE2组件列表中找到它-在任何地方!应该在哪里?是否在可能未安装的可选软件包中?
我正在寻找一个非常通用的TDBTree组件,我想听听一些建议。我正在特别寻找一种显示主记录和“ n”个链接表记录的记录。 (我的意思是来自各个表的记录)。例如,TDBTree将钩接到主表,明细表1,附
我需要将按钮制作成旋转三角形的形状(或者说是任何多边形)。谁能提供任何建议? 最佳答案 查看Win32 API CreatePolygonRgn()和SetWindowRgn()函数,以创建一个HRG
你好专家 我的JvPasswordForm1有一个旧的JVC组件。 似乎该组件不再存在:它替换为哪个组件? 重新获得 最佳答案 尝试查找TJvLoginDialog,TjvPassword已合并到其中
几天前,我已经设置了我的开发环境(在装有Win 7的VM和域上的用户的VM上安装了delphi 2009),并安装了我的组件(jedi's,devExpress,ADS等)。 今天,我启动机器,打开d
开始对控件进行子分类的正确位置/时间是什么? 恢复原始窗口proc的正确时间是几点? 现在我在表单创建过程中子类化: procedure TForm1.FormCreate(Sender: TObje
有人可以给我一些有关如何登录访问的网页(使用任何网络浏览器)的指示吗?我应该建立一个全球代理....钩住网络....吗?我需要记录的只是页面地址,而不是其中包含的信息。 我正在使用Delphi。 谢谢
我创建了一个像 TMyClass = class(TObject) private FList1: TObjectList; FList2: TObjectList; public end;
我有一个BPG文件,我已对其进行修改以用作我们公司的自动构建服务器的make文件。为了使其正常工作,我必须进行更改 用途*用途 'unit1.pas'中的unit1 * unit1 'unit2.pa
我将Delphi 7代码迁移到了Delphi XE4。我在Delphi XE4的LoadFromStram方法中遇到错误,但对于Delphi 7来说也可以正常工作。 错误: First chance
我正在尝试学习一些新技巧,以便更好地组织我在 Delphi 中的单元中的一些源代码。 我注意到我访问的一些函数或方法似乎是类中的类,但是我还没有成功地在类中创建一个工作类,虽然它编译得很好,但在执行代
我有一个包含许多类的大单元,现在我想通过将某些类分成新的单元来重构该单元。 我不得不承认我缺乏使用Delphi内置IDE功能的经验。利用内置功能“查找|查找对类型的本地引用”并没有多大帮助,因为类方法
我是一名优秀的程序员,十分优秀!