1

需要一个表单知道另一个表单来调度行为。在过去,我需要这个,并使用属性来解决。现在,我做了同样的程序,但没有用。

我有下一个 UML 图类,对不起,名称类混淆了: 在此处输入图像描述

所以,我需要 ENPViewGeneric 知道 ENPView。孩子们继承了这些知识。

我在ENPViewGeneric中尝试:

unit EnpViewGeneric;
[...]
protected
   { Protected declarations }
   FENPForm: TENP;
public
    { Public declarations }
    property ENPForm: TENP read FENPForm write FENPForm;
[...]

ENPViewAddAfter实例化在ENPView实例中执行:

procedure TENP.optAddLastOfClick(Sender: TObject);
var
  AfterForm: TEnpAddAfter;
begin
  AfterForm := TEnpAddAfter.Create(self);
  AfterForm.ENPForm := self;
  AfterForm.ShowModal();
end;

现在,ENPViewAddAfter实例需要查询ENPView实例。所以,我在ENPView中定义了一个公共方法来进行查询。方法是:

function getSelectedRowValues(): TStringList;

因此,此代码在第一行中因访问冲突而失败:

procedure TEnpAddAfter.FormCreate(Sender: TObject);
var
  row: TStringList;
  nroMuestraNvo: integer;
begin
  row := ENPForm.getSelectedRowValues();
  nroMuestraNvo := StrToInt(row[0]) + 1;
  muestra.Text := IntToStr(nroMuestraNvo);
end;

有任何想法吗 ?。

4

0 回答 0