【问题标题】:Default property for class in delphi 7delphi 7中类的默认属性
【发布时间】:2010-12-14 12:36:50
【问题描述】:

我想问一下如何在delphi 7类中设置默认属性?因此,只需编写 >> class := '..'; 即可访问它。

【问题讨论】:

  • 欢迎来到stackoverflow。在您对答案的 cmets 中,您已经指出了一些额外的信息(您想要一个类似于某些 VB 代码的 Delphi 示例)。我认为您应该编辑您的问题,放置一些有效的 VB 示例和一些 Delphi 模型(不一定有效),向我们展示您真正追求的东西。还为您用作背景的 VB 版本(VB6、VB.NET 等)重新标记您的问题。
  • 例如 Read 是具有 Display 和 Say 属性的类(布尔数据类型)。而'say'是'Read'类的默认属性,在vb中如果你想访问'say'我们可以写class= true,它与写read.say = true是一样的。我要问的是我们是否可以将某些属性作为上述类的默认属性? (vb部分并不重要,因为我要问的是delphi 7是否可以做到这一点?如果可以的话怎么做?)

标签: delphi delphi-7


【解决方案1】:

你不能这样做,因为它会导致模棱两可的情况。

例如,你有一个类:

type
  TMyClass = class
  public
    property MyProperty: TMyClass read FMyProperty; default;
  end;
var
  a, b : TMyClass;

begin
  // ...
  a := b; // Do we assign to a or to MyProperty
  // ...
end;

它可能适用于其他(基本)类型,但仍然令人困惑。此外,它只是需要输入几个额外的字符。

【讨论】:

  • 不,不是那样的。我的意思是 TAdoQuery 是如何工作的,例如 QRY: TAdoquery,你想访问你拥有的每个字段的值,你可以写 QRY['field_name'] 这导致 Qry.fieldByName('field_name')。现在我想将该默认属性更改为其他内容。我们能做到吗?
  • 你是对的,使用默认关键字是有效的,属性 MyProperty: TMyClass 读取 FMyProperty;默认;...谢谢。
【解决方案2】:

恐怕你不能。类可以有数组默认属性或序数类型默认属性,但不能有字符串。

【讨论】:

  • 我们真的可以有一个有序的默认属性吗?
  • @Sertac - 我正要问这个问题 - 我假设他指的是存储说明符。注意,以后的 Delphi 版本可以有多个默认数组属性,只要它们有不同的签名,例如:property ByName[AName: string]...;defaultproperty ByIndex[AIndex: Integer]...;default
  • @Gerry - 我不知道多个默认属性,很好......一个“字符串”索引?......哦!它有效...没有人告诉我。谢谢 Gerry,你真的很有帮助!
  • 这是非常的新问题:在 D2007 中不起作用,我认为它在 D2009 中起作用。但是字符串索引一直存在 - 请参阅 TStrings.Values
  • 我的意思是在 Visual Basic 中,您可以通过调用类来访问默认属性。举个例子,属性A:字符串读FA写FA;此属性在类中分配为默认值(不是默认值)。因此,如果我们只调用类,我们可以从属性 A 中获取值。我们可以通过调用 Class.A 的类来设置 Class.A 的值,Class := 'A';字符串只是一个例子,你可以使用其他的delphi数据类型。在delphi中可以吗?
【解决方案3】:

我认为您正在寻找的是自定义 Variant 类型: http://docwiki.embarcadero.com/VCL/en/Variants.TCustomVariantType

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 2012-08-15
    • 2010-11-23
    • 2012-01-05
    相关资源
    最近更新 更多