Как добавить новые методы к существующим объектам xojo

#xojo

#xojo

Вопрос:

У меня есть приложение xojo, которое включает в себя несколько списков. Один из объектов ListBox называется DLBObject . Я просто хочу добавить новые методы в DLBObject, чтобы затем я мог вызывать эти методы, используя точечную нотацию. Например, DLBObject.День вперед. Как мне это сделать? СПАСИБО!!!

Ответ №1:

Создайте новый класс, назовем его «MyListBox» и присвоим ему суперимено «ListBox».

Добавьте свои методы в этот класс.

Затем в окне измените супер каждого из ваших списков с «ListBox» на «MyListBox» (покажите инспектору, чтобы увидеть свойства элементов управления listbox).

Теперь в этих списках используется новый расширенный класс, который вы создаете, и есть те новые методы, которые вы добавили.

Ответ №2:

Ответ Томаса — это обычный способ расширения функциональности встроенного класса, обычно вы хотите сделать подклассы.

Однако иногда вы хотите сделать доступными функциональные возможности для всех ваших различных списков и их подклассов или даже для всех типов элементов управления или родительских классов для классов, которые вы можете использовать (например 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)
 

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