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

Delphi跨窗体传递iCode变量时Form2无法识别该变量问题求助

问题根因

你声明的iCode是TDisplayCodeForm类的公共成员变量,不属于全局作用域,因此在Form2中直接调用变量名时,编译器无法找到对应的变量定义。


修复方案

方案1:指定实例访问(改动最小)

Form2已经引用了Form1的单元,直接在调用时指定iCode所属的全局窗体实例即可:

procedure TVerifyForm.btnOTPClick(Sender: TObject);
begin
  ShowMessage(IntToStr(DisplayCodeForm.iCode));
end;

方案2:解耦传值(更规范)

适合项目迭代使用,避免跨单元强依赖:

  1. 先在Form2的类公共段新增接收用的成员变量
type
  TVerifyForm = class(TForm)
    // 原有组件、方法声明
  public
    iCode: Integer;
  end;
  1. Form1打开Form2前主动传值
procedure TDisplayCodeForm.btnNextClick(Sender: TObject);
begin
  VerifyForm.iCode := Self.iCode;
  VerifyForm.ShowModal;
end;
  1. 后续Form2中可以直接调用自身的iCode变量,不需要再引用Form1单元。

方案3:声明全局变量(不推荐)

如果需要多处频繁调用该变量,可以把iCode定义为Form1单元的全局变量:

// OTPDisplayFormUnit 接口段
var
  DisplayCodeForm: TDisplayCodeForm;
  iCode: Integer; // 新增全局变量声明

其他引用了该单元的地方可以直接调用iCode。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:54:05