Как добавить новые методы к существующим объектам xojo
У меня есть приложение xojo, которое включает в себя несколько списков. Один из объектов списка называется DLBObject. Я просто хочу добавить новые методы в объект DLBObject, чтобы я мог затем вызывать эти методы, используя точечную запись. Например, DLBObject.DayForward. Как я могу это сделать? СПАСИБО!!!
2 ответа
Создайте новый класс, назовите его "MyListBox" и установите для его супер имени "ListBox".
Добавьте ваши методы в этот класс.
Затем в окне измените Super каждого из ваших списков со "ListBox" на "MyListBox" (показать Инспектор, чтобы увидеть свойства элементов управления списком).
Теперь эти списки используют новый созданный вами расширенный класс и имеют добавленные вами новые методы.
Ответ Томаса - это обычный способ расширения функциональности встроенного класса, подклассы - это обычно то, что вы хотите сделать.
Однако иногда вы хотите сделать доступными функциональные возможности для всех ваших различных списков и их подклассов, или даже для всех типов элементов управления или родительских классов для классов, которые вы можете использовать (например, 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)
из области списка.