首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不为TForm调用OnShow?

为什么不为TForm调用OnShow?
EN

Stack Overflow用户
提问于 2011-09-22 06:35:29
回答 5查看 1.5K关注 0票数 0

我在Delphi 7的一个项目中工作,我对Delphi 7的语言或运行时不是特别熟悉。我正在尝试调试一个问题,其中一个窗体是可见的和绘制的,等等,但由于某些原因,OnShow事件没有被调用。在什么情况下会发生这种情况?我到底应该去哪里看?

EN

回答 5

Stack Overflow用户

发布于 2011-09-22 06:52:14

对我来说唯一有意义的解释是OnShow事件没有正确地连接到您的处理程序。签入对象检查器或.dfm表单。如果您使用代码进行连接,请确保您的连接足够早。

票数 4
EN

Stack Overflow用户

发布于 2011-09-22 17:06:02

在不调用OnShow事件的情况下,当窗体使用

代码语言:javascript
复制
ShowWindow(Form.Handle, SW_SHOW);   

我在过去的一些项目中看到过这样的事情,这对Delphi来说真的是一个糟糕的想法。

票数 1
EN

Stack Overflow用户

发布于 2011-09-23 09:05:42

你应该在这里勾选

第一个OnShow()必须去掉。

代码语言:javascript
复制
type
  TForm2 = class(TForm)
    procedure FormShow(Sender: TObject); // <--- IM HERE!
  private
    { Private declarations }
  public
    { Public declarations }
  end;

其次..。

代码语言:javascript
复制
implementation

{$R *.dfm}

procedure TForm2.FormShow(Sender: TObject); <--- IM HERE!
begin
 //this time will trigger
end;

最后,您应该打开Dfm查找FormShow事件

代码语言:javascript
复制
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或wat函数名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7507547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档