我正在Delphi 7的一个项目中工作,我对语言或运行时没有太多亲密感。我试图调试一个问题,其中一个窗体是可见和绘画等,但由于某种原因,没有调用OnShow事件。在什么情况下会发生这种情况?我应该在哪里看?为什么OnShow不会被调用TForm?
回答
唯一对我有意义的解释是OnShow事件没有正确连接到你的处理程序。检入对象检查器或.dfm表单。如果您使用代码连接,请确保足够早地连接。
+1。这是最可能的罪魁祸首。只需要一个名为“OnShow”的方法或任何不够的方法;它必须以某种方式与事件相关联。 –
它在dfm(对象检查器) – Earlz
+1中被绑定,除此之外没有其他明确的答案。我以前遇到过这个问题。 – XBasic3000
你应该在这里
查拳OnShow中()必须decleared。
type
TForm2 = class(TForm)
procedure FormShow(Sender: TObject); // <--- IM HERE!
private
{ Private declarations }
public
{ Public declarations }
end;
其次...
implementation
{$R *.dfm}
procedure TForm2.FormShow(Sender: TObject); <--- IM HERE!
begin
//this time will trigger
end;
和最后一件事,你应该打开DFM查找FormShow事件
object Form2: TForm2
Left = 0
Top = 0
Caption = 'Form2'
ClientHeight = 284
ClientWidth = 418
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
OnShow = FormShow <--- IM HERE! without this it will not trigger the OnFormShow
PixelsPerInch = 96
TextHeight = 13
end
如果仍然无法正常工作,可能被称为到其他函数名称OnShow = FormStart或者以前的函数名称。
所有这些都是一样的。它引用正确的函数名称,事件在dfm – Earlz
如果你希望做一些事情,当窗体加载,你想,以确保您可以使用加载
protected
procedure Loaded; override;
它的形式创建过程中调用所有组件进行初始化。
它还具有额外的好处,即表单在弹出窗口时不会像OnActivate可能发生的缓慢构建一样初始化。
有类似的问题时,OnShow中处理程序使用对象检查不叫我发现另一个处理程序在程序执行期间覆盖我的设置进行分配,所以你也可以寻找一个可能的分配在代码中设置昂秀。
- 1. 静态类不会先被调用,而会被实例类调用。为什么?
- 2. 为什么主窗体的OnShow不会触发?
- 3. OnTimer永远不会被调用,不确定为什么?
- 4. 为什么“复制”不被调用?
- 5. 为什么不__dict__可以被调用
- 6. 为什么dealloc不被调用?
- 7. 为什么-didDeselectRowAtIndexPath不被调用?
- 8. 为什么不在@Before被调用
- 9. 为什么Application.OnStartup不被调用?
- 10. 为什么OnDragEnter不被调用?
- 11. 为什么textFieldDidEndEditing:不被调用?
- 12. 为什么BackgroundWorker.OnDoWork不被调用?
- 13. 为什么gameCenterViewControllerDidFinish不被调用?
- 14. 为什么Dispose被调用?
- 15. 为什么不设置clearTaskOnLaunch =“true”会导致OnCreate被调用?
- 16. 为什么sizeForItemAtIndexPath永远不会被调用?
- 17. 为什么PictureCallback在Android相机永远不会被调用?
- 18. 为什么我的datumTokenizer永远不会被调用?
- 19. 为什么函数的函数不会被调用?
- 20. 为什么函数“onaddstream”永远不会被调用?
- 21. 为什么Android WebChromeClient的onCreateWindow方法永远不会被调用?
- 22. 为什么我的shouldOverrideLoading方法永远不会被调用?
- 23. 为什么加入时,它不会被调用
- 24. 为什么handle_info永远不会被调用?
- 25. 为什么构造函数不会被多次调用?
- 26. 为什么FirebaseInstanceIdService.onTokenRefresh()永远不会被调用?
- 27. 为什么onRestoreInstanceState()永远不会被调用
- 28. 为什么AJAX调用不会成功?
- 29. `git-buildpackage`不会调用./configure,为什么?
- 30. scipy.optimize.basinhopping不会调用accept_test。为什么?
你确定'OnShow'是你需要的吗,也许你会用'OnActivate'来混淆它? – ain
@ain是的。当表单显示时,它需要做一些工作,而不仅仅是当它获得焦点 – Earlz