New

From Xojo Documentation

You are currently browsing the old Xojo documentation site. Please visit the new Xojo documentation site!

Operator

Used to create new instances of objects at runtime.

Usage

objectReference = New ClassName [(param1, param2,...)]

Var objectReference As New ClassName [(param1, param2,...)]

Part Type Description
objectReference Must be a type of ClassName Required; variable/property of type ClassName, its superclasses or implemented interfaces.
ClassName A class name Required. Any available class with a non-private constructor.

Notes

The constructor for a class is called whenever you create a new instance of it with the New statement.

The New operator can appear as a modifier on a Var statement that creates a new object. This usage takes the place of two lines of code: The Var statement that creates the object and a separate New statement that instantiates the object.

Creating new instances of all other types of objects

The New operator can be used to create a new instance of any type of class. The object reference must be defined as the class type, one of its superclasses or an interface that it implements.

Constructors

When you create a new object, you will sometimes want to perform some sort of initialization on the object. The constructor is a mechanism for doing this. A class’s constructor is the method that will be executed automatically when an instance of the class is created.

You write a constructor for a custom class by creating a new method for the class and naming it "Constructor". The drop-down list for the Method name field suggests this name and the names of all other methods that can be overridden. There can be multiple overloaded constructors.

When you create a constructor for any subclass, the Code Editor automatically inserts code that calls the constructor for its super class using the Super keyword. If there is more than one constructor, it inserts calls to all of them. This is because the subclass’s constructor overrides its super class’s constructor but the new subclass may not initialize itself correctly without a call to the super class’s constructor. You can edit the inserted calls in the event that this assumption is incorrect.

For example, this constructor creates a DateTime instance and sets it to the passed date. The parameters are year, month, and day.

Var d As New DateTime(2025, 4, 15)

If the parameters were omitted, the new date would be set to the current date.

Sample Code

This code creates and then displays a new instance of a Window called "AboutBox":

Var w As AboutBox
w = New AboutBox

This code creates a new instance of a DesktopMenuItem called "WindowItem1":

Var m As DesktopMenuItem
m = New WindowItem1

This code creates a new instance of a MessageDialog box:

Var d As New MessageDialog

It is equivalent to the following two lines:

Var d As MessageDialog
d = New MessageDialog

This code uses the DesktopMenuItem constructor to create a new menuitem in the Edit menu and assign it its Name property:

Var EditPasteSpecial As New DesktopMenuItem("Paste Special...")
Editmenu.AddMenuAt(5, EditPasteSpecial)

Constructors

This code creates a DateTime instance and sets it to 22 September, 2025, 9:15AM.

Var d As New DateTime(2025, 9, 22, 9, 15, 0)

The following code is from the example project "Custom Drag" in the Examples folder. The main window consists of a DesktopLabel control and a DesktopTextArea. The user can drag the text in the DesktopLabel into the DesktopTextArea. This is not possible by default but the ability to drag the text is enabled by the code in the MouseDown event of the DesktopLabel. It is:

Var d As DragItem
d = New DragItem(Self, Me.Left, Me.Top, Me.Width, Me.Height)
d.Text = Me.Value
d.Drag

The following code creates a new FolderItem. You can create a copy of a FolderItem by passing the FolderItem to be copied to the constructor. The result is a copy of the passed FolderItem rather than a reference to it.

The following code creates a new Picture instance that has an alpha channel (i.e., a transparency parameter).

Var width As Integer = 2000
Var height As Integer = 2000

// Creates new picture
Var pic As New Picture(width, height)

This constructor creates a Picture object that will mirror the content that is drawn into a Canvas in its Paint event.

p = New Picture(Canvas1.Width, Canvas1.Height)

See Also

Var command; Nil datatype; Constructor concept