【发布时间】:2015-01-26 13:13:49
【问题描述】:
我正在尝试使用来自另一个单元的表单,但代码无法识别另一个单元。
例子:
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 单元,效果很好。
我不明白为什么一个单元会发生此错误,而另一个单元不会发生此错误。
希望你能帮帮我!
【问题讨论】:
-
您发布的代码也会生成
E2029 Identifier expected but 'IMPLEMENTATION' found,因为您在没有定义变量的接口中定义了一个全局var部分。unit A和unit B都是这种情况——您声称unit B有效意味着您发布的代码与您实际编译和使用的代码不同。要求我们帮助调试您从您正在测试的实际代码中故意修改的代码可能会使调试变得非常困难并且让每个人都感到困惑。您应该始终尝试发布您正在使用的确切代码。 -
知道了,J。那么,我应该用代码编辑我的问题吗?我试图减少整个代码,但实际上我删除了一些重要部分。然后我会发布该部分代码的全部内容,对吗?感谢您的评论。
-
不,事实上,我认为尝试制作一个最小示例的方法是最好的想法 - 这将问题减少到演示问题所需的最少代码量,并使每个人都更容易。但是,如果您正在制作一个最小的示例,则应始终确保首先对其进行测试,以确保包含正确、最少的代码来演示您的问题。这样做的另一个好处是,您通常会在此过程中解决自己的问题! stackoverflow.com/help/mcve
-
好吧,我正在测试它。再次感谢。
-
发布你能做的最小的代码来说明这个问题。发布假代码对任何人都没有帮助。这似乎仍然是个问题,因为 FB 在代码中没有出现。
标签: delphi delphi-2010