For Each XControl

Boa tarde

Eu gostaria de saber se tem como fazer um for ou for each dos XControls adicionados numa tela.

Eu tenho uma função que adiciona os XControls

		set rt = AddObject("XC_Teste", true, "XC_Teste" & i)
		rt.Visible = true
		rt.X 	   = distanciaX
		rt.Y 	   = distanciaY
		rt.Height  = XC_height
		rt.Width   = XC_width

E gostaria de saber se existe uma forma de fazer um for each para acessá-los depois

@wagner.dracha, boa tarde.

Pode criar um XControl e no evento CustomConfig colocar um script parecido com este:

Sub XControl1_CustomConfig()
'Procura objeto pelo tipo XC_Teste
for each xctrl in Screen
	if TypeName(xctrl) = "XC_Teste" then
		MsgBox xctrl.Name
	end if
next
End Sub

Ou:

Sub XControl2_CustomConfig()
' Procura objeto pelo nome do tipo 
resp = InputBox("Nome do tipoque deseja procurar:")
if resp <> "" then
	for each xctrl in Screen
		if TypeName(xctrl) = resp then
			MsgBox xctrl.Name
		end if
	next
end if

End Sub

Se quiser em Runtime, coloca o mesmo script em um CommandButton.

Obs.: Para descobrir o tipo, deve-se verificar esta parte da lista de propriedades

Onde:
Bomba1 é a propriedade Name do objeto instanciado (o que está sendo solicitado neste script);
biblioteca é a origem da classe do XControl (nome do arquivo .lib);
Bomba é o nome da classe ou tipo do objeto XControl (nome do XControl).

Sds.

1 Like

Sim, é possível conforme exemplo deste link.

Para usar o For Each, basta seguir o exemplo e alterar o código desta forma:

    methods = a.EnumMethods(obj, True, False, False)
    For Each method In methods
        msg = msg & method & vbNewLine
    Next 
2 Likes