[Gambas-user] Parsing through all controls of a form
Benoit Minisini
gambas at ...1...
Thu Jan 19 15:04:51 CET 2006
On Wednesday 18 January 2006 23:41, johnf wrote:
> On Wednesday 18 January 2006 14:36, Michael Wuest wrote:
> > Hi there,
> >
> > in VB6 you can access all the controls of a form
> > by doing
> >
> > for i0=0 to form1.controls.count - 1
> > print form1.controls(i0).name
> > next i0
> >
> > how can I do similar things in Gambas? I played
> > around with form1.children and for..each but I get
> > an error every time after the fourth or fifth
> > control saying that he is referencing himself...
> >
> > What is the correct method.
> >
> > Thanks,
> > bye,
> > Michael.
>
> Below is an example of how I looping thru all the controls on my form. It
> should provide an idea of how to do it. BTW I got this from the list.
> Sorry I can't recall who provided the info (I thank person).
>
> John
>
> PUBLIC SUB ClearFields(formname AS Window)
> 'a way to loop thru the controls
> DIM hControl, tabControl AS Control
> DIM iNumTabs, imynum AS Integer
> DIM i AS Integer
> DIM sNames AS String
> DIM myVariant AS Variant
>
> FOR EACH hControl IN formname.Children
> IF Object.Class(hControl) = "TextBox" OR Object.Class(hControl) =
> "ComboBox" OR Object.Class(hControl) = "TextArea" THEN
> SELECT CASE Object.Class(hControl)
>
> CASE "TextBox"
> 'myVariant = Object.GetProperty(hControl, "Text")
> Object.SetProperty(hControl, "Text", "")
> CASE "GridView"
> Object.Call(tabControl, "Clear")
> CASE "ComboBox"
>
> CASE "TextArea"
> Object.Call(hcontrol, "Clear")
>
> END SELECT
> ENDIF
>
> IF Object.Class(hControl) = "TabStrip" THEN
> iNumTabs = Object.GetProperty(hControl, "Count")
> FOR i = 0 TO iNumTabs - 1
> Object.SetProperty(hControl, "Index", i)
> FOR EACH tabControl IN hControl[i].Children
> SELECT CASE Object.Class(tabControl)
> CASE "TextBox"
> Object.SetProperty(tabControl, "Text", "")
> CASE "GridView"
> Object.Call(tabControl, "Clear")
> CASE "TextArea"
> Object.Call(tabControl, "Clear")
> END SELECT
> NEXT
> NEXT
> Object.SetProperty(hControl, "Index", 0)
> ENDIF
> NEXT
> 'editmode(FALSE)
> 'custno.Enabled = TRUE
> END
>
I just finished to implement the pseudo-collection "Window.Controls", that
will allow you to recursively enumerate all controls on a form.
Your loop will look like:
FOR EACH hControl IN formname.Controls
...
NEXT
You will get it in the next development version release.
Regards,
--
Benoit Minisini
More information about the User
mailing list