Как добавить новые методы к существующим объектам 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)

из области списка.

Другие вопросы по тегам