devxlogo

Set focus

Set focus

Question:
When a user selects a value from a list box, I populate the contents of arepeater. I also want to set the focus into the repeater’s first field.How can I accomplish this?

Answer:
You’re probably running into this problem: Fields in a repeater can only bereferenced by an aggregate function. You’re getting this message becauseyou’re using the name of the field in the repeater in your Oracle Basic code.

When OPO makes a repeater, it creates an array of each field in therepeater. If you simply use the Name property, you will be unable toreference a single instance of the field. However, each field is a separatewindow object. If you can get the window handle of the object, you canreference it directly.

You can do this by adding a user-defined property calledudpField with a data type of “Object” to the form,frmMain, that the repeater is in. In the OnLoad()method of the first field of the repeater, add the following code:

frmMain.udpField = Self

This will cause the udpField property to be set each time a newinstance of the field in the repeater is created, so the property will endup with the handle of the first field in the last row of the repeater. Toset the value of the udpField property to the window handle ofthe field’s first instance, change the code to:

IF ISNULL(frmMain.udpField) THEN frmMain.udpField = Self

The udpField property now has the window handle of the firstfield in the first row of the repeater. You can use this code:

udpField.SetFocus()

to set the focus to the first field of the first row in the repeater.

devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist