delphi - 错误: "Undeclared identifier" using a form from another Unit - Delphi 2010

标签 delphi delphi-2010

我正在尝试使用另一个单元的表单,但代码无法识别另一个单元。

示例:

     unit uImpressao;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics,
      Controls, Forms, Dialogs, uniGUITypes, uniGUIAbstractClasses,
      uniGUIClasses, uniGUIForm, uniGUIBaseClasses, uniPanel, uniURLFrame;

    type
      TfImpressao = class(TUniForm)
        ufRelatorio: TUniURLFrame;
        UniImage1: TUniImage;
        procedure UniImage1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    implementation

    {$R *.dfm}

    uses
      MainModule, Main, uBancoHoras;

procedure TfImpressao.UniImage1Click(Sender: TObject);
begin
  fBh.iTeste.Visible := false;
end;

end.

    unit uBancoHoras;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics,
  Controls, Forms, Dialogs, uniGUITypes, uniGUIAbstractClasses,
  uniGUIClasses, uniGUIForm, uniLabel, pngimage, uniImage, uniGUIBaseClasses,
  uniPanel, uniPageControl, uniButton, uniBitBtn, uniSpeedButton, uniCanvas,
  uniDateTimePicker, uniMemo, uniMultiItem, uniComboBox, uniEdit, uniBasicGrid,
  uniDBGrid, uniDBMemo, uniRadioButton, uniDBText, uniRadioGroup, frxClass,
  frxDBSet;

type
  TfBH = class(TUniForm)
    iTeste : TUniImage;
  private
    { Private declarations }
  public
    { Public declarations }

  end;

var
  url: string;

function fBH: TfBH;

implementation

{$R *.dfm}

uses
  MainModule, Main, uImpressao;

function fBH: TfBH;
begin
  Result := TfBH(MM.GetFormInstance(TfBH));
end;

procedure TfBH.iTesteClick(Sender: TObject);
begin
    fImpressao.ShowModal;
end;

当我尝试在 uBancohoras 单元中使用 uImpressao 单元时,返回错误“未声明的标识符‘fImpressao’”。 在 uImpressao 单元中使用 uBancoHoras 单元,效果很好。

我不明白为什么一个单元会发生此错误,而另一个单元不会发生此错误。

希望你能帮助我!

最佳答案

注意:请注意,此答案基于问题中发布的原始代码,该代码随后被完全不同的新代码替换。

fBH 未在单元 A 中声明,因此 fBH.iTeste.Visible := True; 不可能工作;没有这样的变量。您删除了 IDE 为您创建的全局变量 fBH(不过,有趣的是,您在其上方的 implementation 关键字上方留下了 var 语句) .

在声明中重新添加(通过在类声明末尾和 implementation 关键字之间添加 var fBH: TfBH;),或者创建一个实例当您需要使用它并通过那里的局部变量访问它时,在单元 B 中形成。

(无论您朝哪个方向走,您都不会使用表单方法中的变量来寻址表单;请使用 Self 代替。不要使用 fBH.ShowModal;使用要么是 Self.ShowModal 要么是 ShowModal。)

关于delphi - 错误: "Undeclared identifier" using a form from another Unit - Delphi 2010,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28150774/

相关文章:

delphi - 使用许多参数从 C++\CLI 调用 Delphi DLL

delphi - 如何在运行时更改界面语言?

delphi - 如何使用 mouse_event(MOUSEEVENTF_WHEEL 模拟向下旋转滚动按钮

delphi - 使用 ifileoperation copyitem 时提升 uac

delphi - ServerController 的 ComInitialization 属性

delphi - 属性不继承?

web-services - Delphi 2010导入WCF wsdl时锁定然后关闭

delphi - 显示 TTreeViewItem 的 Expander 按钮

delphi - JEDI JCL 压缩库无法打开跨区存档文件

delphi - 为什么我的 Delphi 2010 资源 dll 文件是 ANSI 编码的