Página 1 de 1
¿Quantos controles tem uma janela?
Enviado: 19 Jun 2011 23:44
por Adalberto
Amigos e amigas do foro, boa noite
Agora meu pedido de ajuda a vocês e por o seguinte:
Como saber quantos controles tem em uma janela e daí dar o foco para ao primeiro logo ao segundo e assim.
Aguardo sua atenciosa resposta.
Graças a todos e todas!
¿Quantos controles tem uma janela?
Enviado: 21 Jun 2011 10:23
por MARCELOG
OLá companheiro,
montei essa procedure para apagar os controles.
Talvez lhe sirva.
Código: Selecionar todos
PROCEDURE LIMPATELA()
LOCAL aControle, i, c
aControle := _GetArrayOfAllControlsForForm('SPLIT2')
IF !EMPTY(aControle)
FOR i := 1 TO LEN(aControle)
c := aControle[i]
IF c == 'OTBR'
OTBR:DESTROY()
ELSEIF c == 'OTBR1'
OTBR1:DESTROY()
ELSE
DOMETHOD('SPLIT2',c,'RELEASE')
// RELEASE CONTROL &c OF SPLIT2
ENDIF
NEXT i
ENDIF
INVALIDATERECT(GETFORMHANDLE('SPLIT2'),0)
RETURN
//============================================================================
Function _GetArrayOfAllControlsForForm ( cFormName )
Local nFormHandle, nControlCount, i, aRetVal := {}, x
nFormHandle := GetFormHandle (cFormName)
nControlCount := Len(_HMG_aControlHandles)
For i := 1 To nControlCount
If _HMG_aControlParentHandles[i] == nFormHandle
If ValType(_HMG_aControlHandles[i]) == 'N'
IF ! Empty(_HMG_aControlNames[i])
If Ascan(aRetVal,_HMG_aControlNames[i]) == 0
Aadd(aRetVal, _HMG_aControlNames[i])
EndIf
ENDIF
ElseIf ValType(_HMG_aControlHandles [i]) == 'A'
For x := 1 To Len (_HMG_aControlHandles[i])
IF !Empty(_HMG_aControlNames[i])
If Ascan(aRetVal,_HMG_aControlNames[i]) == 0
Aadd(aRetVal,_HMG_aControlNames [i])
EndIf
ENDIF
Next x
EndIf
EndIf
Next i
Return aRetVal
¿Quantos controles tem uma janela?
Enviado: 21 Jun 2011 23:16
por Adalberto
Ola Marcelo,
Testei tua função e funciono certinho mesmo, se eu tenho 3 controles a função da o nomes das três mais DummyMenuName1 e DummyMenuName2, que e isso?
No foro MiniGui Brasil compartilharam outra função, o resultado e o mesmo, com os Dummy citados, quer ver?
Código: Selecionar todos
//
FUNCTION ControlesdeFormulario( cFormName , lMostrar )
//
LOCAL acControles, nParentHandle, nLen, nControl, cTempStr, cControl
//
lMostrar := IF(VALTYPE(lMostrar) <> "L" , .F., lMostrar)
cFormName := IF(VALTYPE(cFormName) <> "C" , ThisWindow.Name, cFormName)
nParentHandle := GetFormHandle(cFormName)
nLen := LEN(_HMG_aControlParenthandles)
cTempStr := ""
acControles := {}
FOR nControl := 1 TO nLen
IF _HMG_aControlParenthandles[nControl] == nParentHandle
cControl := _HMG_aControlNames[nControl]
IF !EMPTY(ALLTRIM(cControl))
AADD(acControles, cControl)
cTempStr += cControl + CRLF
ENDI
ENDI
NEXT nControl
IF lMostrar
MSGBOX(cTempStr, PADR(cFormName, 50))
ENDIF
Marcelo, muito obrigado, de verdade.
Adalberto