Function 对于Delphi10.2.3:如何创建unit.someproperty.anotherproperty.mymethod(myvariable:variabletype):variabletype;?

Function 对于Delphi10.2.3:如何创建unit.someproperty.anotherproperty.mymethod(myvariable:variabletype):variabletype;?,function,delphi,components,procedure,delphi-10.2-tokyo,Function,Delphi,Components,Procedure,Delphi 10.2 Tokyo,对于Delphi10.2.3:不确定如何提问,但如何创建类似于memo1.lines.add()的方法;和memo1.Lines.Count.ToString;其中行包含许多其他方法、过程和属性 我想可能是这样的: unit.someproperty.anotherproperty.mymethod(myvariable:variabletype):variabletype 或 unit.someproperty.unit2.mymethod(myvariable:variabletype):v

对于Delphi10.2.3:不确定如何提问,但如何创建类似于memo1.lines.add()的方法;和memo1.Lines.Count.ToString;其中行包含许多其他方法、过程和属性

我想可能是这样的:

unit.someproperty.anotherproperty.mymethod(myvariable:variabletype):variabletype

unit.someproperty.unit2.mymethod(myvariable:variabletype):variabletype

外观如下所示:

function component.extract.tagA(attribute, source: string): string;
procedure component.insert.tagA(attribute, source, dest: string);
procedure component.modify.tagA(attribute, source, dest: string);
如果您键入组件。它将为您提供有关提取、插入和修改作为下一步使用的选项的帮助

那么,我如何制作一个函数或过程,在这里我可以有。或者,提取。或者,插入。等

我知道这应该是基础知识,但我正在做的项目已经足够大,让我更容易阅读和使用。我知道这是可以做到的,但我不知道如何恰当地表达它,以便找到我需要做什么

我想要多个单位。。。然后我用它们创建一个组件,这样它们就有了嵌套的方法和过程,就像你们在Tmemo中看到的那些虚线方法和过程一样。。。如memo1.lines.add、memo1.lines.delete、memo1.lines.insert等


请帮忙!提前谢谢

您要查找的是嵌套对象
Memo1
TMemo
类的一个实例,它有一个
Lines
属性,该属性是
TStrings
类的一个实例,它有
Add()
Delete()
Insert()
等方法和
Count
等属性


因此,在
组件中,
提取
插入
修改
需要嵌套对象,这些对象需要是具有
tagA()
方法的类型的实例

Delphi语法不允许将类声明为具有点点子属性

但是,您可以通过使用已知的编码样式来实现这一效果 作为流畅的设计(参见)。下面是一个非常简单的例子:

type
  TMySubProperty = class
    protected
    procedure DoSomething;
    property Width : Integer read {define getter and setter}
  end;

  TMyComponent = class(TComponent)
  [...]
  property
    MySubProperty : TMySubProperty read GetMySubProperty;
  end;

  [...]

  function TMyComponent.GetMySubProperty : TMySubProperty;
  begin
    Result := {calculate the result however you like}
  end;
然后,在代码中可以编写如下内容

  MyComponent.MySubProperty.Width := 666;
  MyComponent.MySubProperty.DoSomething;
显然,您可以有任意数量的子特性,并且可以将它们嵌套到任意的子特性 级别:基本上,子属性需要一个类类型,子属性需要一个函数 类(在这个简单示例中为TMyComponent),它返回您正在尝试的类实例 访问。可以对
Getter
函数进行编码,以接受识别特定对象的参数 子属性类的实例,如中所示

  MyComponent.MySubProperty[i].Width := 666;

如果你不问的话,这应该足以让你走了。

忽略memo.lines或我写的任何东西。。。出于某种原因,你只是在读那些话,却没有真正看到我在做什么。我试图理解如何创建嵌套的方法/过程。。。但不是嵌套在过程/方法中。当我在google中查找嵌套过程时,我得到了许多如何在过程中嵌套的示例,但是没有任何示例向我展示如何创建一个单词之间有多个点的组件来创建一个方法或过程!unit.someproperty.anotherproperty.mymethod(myvariable:variabletype):variabletype;这回答了我的问题。很好,我很高兴。那么,也许你愿意接受。我怎么接受呢?然而,我投了赞成票。没关系,我找到了。。。我必须点击投票按钮下方的复选框。答案的顶部有一个“勾号”图标。只要点击它…@MartynA只是为了记录,你的例子(虽然它可能是OP想要的)与流畅的界面无关。fluent接口的主要特性是能够链接方法(函数)调用,而无需再次显式引用实例,这是通过从每个调用返回Self实现的。举个例子(如果你忽略了问题的继承部分,这通常与fluent不太匹配),你可以看看这也解释了我在寻找什么,但我发现你没有关于如何实现的例子。MartynA分享了一个例子,告诉我如何在流畅的设计中实现它。我现在就去试着编码。雷米,你的解释有不同的例子吗?还是相同的?我想雷米想说的是你应该明白,你可以把一个对象作为另一个对象的属性/类字段。。。