You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何关闭标题含指定ClientID的所有窗体?解决Application.Forms未声明问题

解决‘Application.Forms是未声明的标识符’问题

这个错误的核心原因是代码所在单元未引用包含Application.Forms定义的标准单元,以下是具体解决步骤:

1. 引用必要单元

Application.Forms属性定义在Forms单元中,你需要在过程所在单元的uses子句里添加这个单元:

修改后的完整代码示例

uses
  Forms, // 必须添加此单元,否则无法识别Application.Forms
  // 保留你原有的其他单元...
;

procedure CloseFormsWithClientID(const ClientID: string);
var
  I: Integer;
  Form: TForm;
begin
  if ClientID <> '' then
  begin
    // 从后往前遍历,避免关闭窗体后Forms集合长度变化导致索引错位
    for I := Application.Forms.Count - 1 downto 0 do
    begin
      Form := Application.Forms[I];
      if Pos(ClientID, Form.Caption) > 0 then
      begin
        Form.Close;
      end;
    end;
  end;
end;

2. 额外注意事项

  • 无论使用Delphi还是Lazarus,Forms单元都是必须的,它包含TApplication类的Forms集合定义。
  • 保持倒序遍历的写法,因为关闭窗体后Forms集合的元素会被移除,正序遍历会导致后续索引越界或跳过部分窗体。

内容的提问来源于stack exchange,提问作者twobit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 16:39:51