delphi – 尝试捕获表单的oncreate

delphi – 尝试捕获表单的oncreate,第1张

概述我工作的项目包括几百种表格. 它们主要来自主体.应用程序名称位于所有表单中. 现在应用程序的另一个“版本”必须将表单标题更改为另一个应用程序名称.但这是有条件的. 我提出的是绑定 Screen.OnActiveFormChange := ScreenOnActiveFormChange; 在formcreate中并为此制定程序. procedure TFormMAIN.ScreenOnActive 我工作的项目包括几百种表格.
它们主要来自主体.应用程序名称位于所有表单中.

现在应用程序的另一个“版本”必须将表单标题更改为另一个应用程序名称.但这是有条件的.

我提出的是绑定

Screen.OnActiveFormChange := ScreenOnActiveFormChange;

在formcreate中并为此制定程序.

procedure TFormMAIN.ScreenOnActiveFormChange(Sender: TObject);begin  if Newversion then begin    if assigned(screen.activeform) then begin      Screen.ActiveForm.Caption := SwapFormCaption(Screen.ActiveForm.Caption);    end;  end;end;

这在95%的案例中运作良好.但是在那些5%中,表格显示得太快了.在更新标题之前绘制窗口,窗口将其保留在那里.但标题已经有了新的价值.
有效的补救措施是增加和减少1个像素的表格高度然后它会显示正确. form.repaint在这里没有帮助.
这是一种相当丑陋的做事方式.

我真正想要的是拦截子表单的创建而不是激活.我试图找到相关的资源,但没有成功.

解决方法 你尝试过使用window API吗?

SetwindowText(Screen.ActiveForm.Handle,PChar(SwapFormCaption(Screen.ActiveForm.Caption));

编辑:
另外1个建议:添加DrawMenubar API调用以强制重绘窗口菜单栏

DrawMenubar(Screen.ActiveForm.Handle);
总结

以上是内存溢出为你收集整理的delphi – 尝试捕获表单的oncreate全部内容,希望文章能够帮你解决delphi – 尝试捕获表单的oncreate所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1271473.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存