gpt4 book ai didi

delphi - 访问 TForm.Create 上的 TWinControl.Handle

转载 作者:行者123 更新时间:2023-12-02 06:16:57 26 4
gpt4 key购买 nike

我有这个代码:

procedure TForm1.FormCreate(Sender: TObject);
begin
DoSomethingWithCombobox(ComboBox1.Handle);
end;

问:是否保证ComboBox1.Handle 始终在TForm.FormCreate 上创建(Form1 是ComboBox1 的父级)?也许在 OnFormShow 上?从我的测试来看,Handle 在此时似乎始终可用。

我知道此时ComboBox1.Handle将调用HandleNeeded。但我可以假设 Handle 此时始终可用吗?

我还知道 TWincontrol 可以安全访问 CreateWnd 上它自己的句柄。我的问题特定于我无法控制子控件的 CreateWnd 且只能访问父事件/消息的场景。

希望我的问题很清楚。

最佳答案

如果您的测试表明可以正常访问该控件的句柄,那么应该可以。您是应用程序开发人员,因此,如果您稍后更改任何内容以打破该假设,您也将有权修复它。

访问控件的 Handle 属性将生成有效的窗口句柄或引发异常。你不会得到空句柄。当控件的父窗口无法存在时,通常会出现异常。

您此时获得的句柄不能保证是控件将拥有的最后一个句柄,因为控件的底层窗口可能会重新创建,但由于您是应用程序开发人员(而不是组件库)开发人员),您可以合理控制表单创建完成后重新创建窗口的频率。这是因为您正在处理 OnCreate 事件。例如,如果您重写了 Loaded 方法,那么所有窗口创建事件都已完成的信心就会降低。

关于delphi - 访问 TForm.Create 上的 TWinControl.Handle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37484308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com