【发布时间】:2016-01-11 09:56:40
【问题描述】:
我有一个用于登录我的应用程序的辅助表单,为此我有一个程序AddLine:
type
TFormLog = class(TForm)
Memo1: TMemo;
private
procedure AddLine(aString: String);
{ Private declarations }
public
{ Public declarations }
end;
var
FormLog: TFormLog;
implementation
{$R *.dfm}
{ TFormLog }
procedure TFormLog.AddLine(aString: String);
begin
Memo1.Lines.Add(aString);
end;
当我使用自动完成 (Ctrl-Shift_C) 时,Delphi 将 AddLine 过程添加到 private 部分,因此很明显,当我尝试时,该过程对主窗体是不可见的
FormLog.AddLine('some text');
但将声明移至公共部分并没有帮助:
type
TFormLog = class(TForm)
Memo1: TMemo;
private
{ Private declarations }
public
{ Public declarations }
procedure AddLine(aString: String);
end;
我仍然收到 AddLine 过程未解决的编译器错误。我确实将日志单元添加到 uses 子句中,所以 Formlog 在主窗体中是已知的。
尝试直接访问 TMemo 具有相同的效果。
如何修复我的代码,以便我可以从我的主表单向日志表单添加文本?
【问题讨论】:
-
将
AddLine移至公共部分并保存表单。将单元添加到您的项目中。如果这不起作用,编译器必须选择另一个具有相同名称的单元或使用较早编译的单元(以某种方式看不到源代码)。 -
至于选择另一个单元,我会启动 procmon,开始编译,停止 procmon 并验证编译了哪些 .pas 文件。很可能,这不是您假设的那个。
-
报告您的实际错误并显示实际有问题的代码,而不是有效的代码。正确的代码无关紧要。使用复制和粘贴来报告编译器错误,而不是“它不起作用”或“我收到编译器错误”。
标签: forms delphi delphi-xe8