【问题标题】:Delphi 7: objects on frame aren't rendered (bug?)Delphi 7:没有渲染框架上的对象(错误?)
【发布时间】:2012-04-24 07:05:30
【问题描述】:

我正在使用框架来覆盖父窗体上的多个对象。该框架包含一个进度条、一个标签和一个按钮。当我激活框架时,只呈现进度条。标签和按钮保持不可见。在显示框架时在代码中将 .enable + .visible 设置为 true 也不起作用。我可以在 IDE 中完美地看到这些对象。它们仅在运行时消失。

我在此线程上读到,Delphi 7 中似乎存在可能导致此行为的错误,但我不确定:

http://www.delphigroups.info/2/7/734850.html

有没有办法让 Delphi 渲染所有框架的对象?

更新:框架的 dfm 代码

object Frame2: TFrame2
  Left = 0
  Top = 0
  Width = 528
  Height = 116
  TabOrder = 0
  object Label1: TLabel
    Left = 8
    Top = 8
    Width = 32
    Height = 13
    Caption = 'Label1'
  end
  object Button1: TButton
    Left = 8
    Top = 72
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 0
  end
  object ProgressBar1: TProgressBar
    Left = 8
    Top = 32
    Width = 473
    Height = 24
    TabOrder = 1
  end
end

【问题讨论】:

  • 你能把框架的 *.dfm 文件转储到这里吗?我已经使用框架(而不是表单)编写了多个 D7 应用程序,但从未遇到过这个问题......
  • 按钮是 TSpeedButton 还是从 TGraphicControl 派生的东西?
  • 您正在使用框架来覆盖其他控件?但是你说你激活框架——这是什么意思?然后你说你显示框架,但既然框架覆盖了其他组件,为什么显示框架会使控件消失有什么奇怪的呢?他们被覆盖了!
  • 您要求解决方法。当您尝试提供的链接中列出的解决方法时发生了什么?
  • @Dorin:我用 dfm-code 更新了描述。

标签: delphi object label frame invisible


【解决方案1】:

尝试将您的组件放入面板中。

【讨论】:

  • 谢谢!我没想到!由于我在下面解释的原因,出现了同样的问题。
【解决方案2】:

好吧,我发现了错误,我很惭愧,因为这是一个相当明显的错误:

单击按钮后,将渲染帧,包括其所有对象,但是,单击也会初始化 CPU 密集型函数。由于这是早期代码,我还没有实现线程,所以该函数冻结了 gui 渲染,从而阻止了一些对象的出现。当我注释掉该功能时,这已“修复”。我也被这样一个事实吓坏了,框架上的进度条不仅出现了,而且尽管 CPU 使用率很高,但它还在不断更新。

再次感谢所有回复的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多