1

我有一个包含许多列表框的 xojo 应用程序。列表框对象之一被命名为 DLBObject。我只是想向 DLBObject 添加新方法,以便我可以使用点表示法调用这些方法。例如 DLBObject.DayForward。我怎么做?谢谢!!!

4

2 回答 2

3

创建一个新类,我们将其命名为“MyListBox”,并将其超级名称设置为“ListBox”。

将您的方法添加到该类。

然后,在窗口中,将每个列表框的Super从“ListBox”更改为“MyListBox”(显示检查器以查看列表框控件的属性)。

现在这些列表框使用您创建的新扩展类并添加了这些新方法。

于 2014-06-25T21:35:04.357 回答
3

Thomas 的回答是扩展内置类功能的常用方法,子类化通常是您想要做的。

但是,有时您希望为所有不同的列表框及其子类提供功能,甚至为您可以使用的类(例如RectControl)提供所有类型的控件或父类。

为此,您可以在 Module 中创建 Global 方法,它们的第一个参数是您要扩展的类的类型,并以“ Extends”关键字为前缀。例如:

Sub AppendToColumn(Extends sender As Listbox, value As String, column As Integer)
  if sender.ListCount > 0 and column > -1 and sender.ColumnCount > column then
    for rowIndex As integer = 0 to sender.ListCount - 1
      sender.Cell(rowIndex, column) = sender.Cell(rowIndex, column) + value
    next
  end if
End Sub

然后您就可以在任何列表框上使用该功能...

DLBObject.AppendToColumn(" wibble", 0)

或者...

me.AppendToColumn(" wobble", 1)

从列表框的范围内。

于 2014-06-27T22:33:55.100 回答