我有一个包含许多列表框的xojo应用程序。其中一个列表框对象名为DLBObject。我只想向DLBObject添加新方法,以便我可以使用点表示法调用这些方法。例如DLBObject.DayForward。我怎么做? THANX !!!
答案 0 :(得分:3)
创建一个新类,我们将其命名为“MyListBox”,并将其 Super 名称设置为“ListBox”。
将您的方法添加到该类。
然后,在窗口中,将每个列表框的 Super 从“ListBox”更改为“MyListBox”(显示Inspector以查看列表框控件的属性)。
现在这些列表框使用您创建的新扩展类,并添加了您添加的新方法。
答案 1 :(得分:3)
Thomas的答案是扩展内置类功能的常用方法,子类化通常是您想要做的。
但是,有时您希望为所有不同的列表框及其子类提供功能,甚至可以为您可以使用的类提供所有类型的控件或父类(例如RectControl
)。
为此,您可以在模块中创建全局方法,这些方法的第一个参数是您要扩展的类的类型,并以“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)
来自列表框的范围。