Page 1 of 1

Esconder control en dialogo

Posted: Thu Apr 23, 2020 2:50 pm
by jvtecheto
Hola.
Por reutilizar un diálogo me interesa esconder(que no se vea) un combobox, entonces pruebo al activar el diálogo.
ON INIT oCombo:Hide().
Pero me arroja error.
Dentro del Diálogo o también pruebo.
oCombo:Hide().
Pero tampoco me funciona.

Alguna idea?

Muchas gracias

Saludos

Jose

Re: Esconder control en dialogo

Posted: Thu Apr 23, 2020 2:56 pm
by karinha
STATIC oCombo?

Re: Esconder control en dialogo

Posted: Thu Apr 23, 2020 3:05 pm
by jvtecheto
karinha wrote:STATIC oCombo?
Pues no lo tengo como Local, debo definirlo static.

Gracias siempre por tu ayuda

Jose


Enviado desde mi POCOPHONE F1 mediante Tapatalk

Re: Esconder control en dialogo

Posted: Thu Apr 23, 2020 3:51 pm
by AngelSalom
Yo uso esta función :

Code: Select all

Function OcultaObjetos(aObjetos,lCondicion,lMostrar)
/* =================================================================================================
    Ocuta los objetos de aObjetos si se cumple lcondicion. Para que funcione hay que llamar a esta 
    función dentor del ON Init del diálogo
        --------------
        Victor 21/09/2018 16:20:55
        Revisión : Angel - 24/09/2018 17:37:03 - Añadido lMostrar para que muestre los objetos
        Victor 09/01/2019 9:32:19 se activa el modo recursivo ya que aObjetos también puede tener items que sean arrays.
        ================================================================================================
*/      
Loca nC, nLen:=Len (aObjetos)
  DEFAULT lMostrar:=.F.
  
  If lMostrar
    For nC:=1 To nLen
        If ValType(aObjetos[nC])="A"
            OcultaObjetos(aObjetos[nC],lCondicion,lMostrar)
        Else
            aObjetos[nC]:Show()
        Endif
        Next
  Else
    If lCondicion 
      For nC:=1 To nLen
        If ValType(aObjetos[nC])="A"
                OcultaObjetos(aObjetos[nC],lCondicion,lMostrar)
            Else
            aObjetos[nC]:Hide()
          Endif
          Next
      Endif
    Endif
    
Return Nil

Re: Esconder control en dialogo

Posted: Thu Apr 23, 2020 5:46 pm
by FranciscoA
Yo lo hago como dice Angel. ( creo que se le llama Detached Local )

Code: Select all

ACTIVATE DIALOG oDlg ON INIT oCultar(oCombo)

Function oCultar(oCombo)
   oCombo:Hide()
return nil

ó si se quiere ocultar varios combos del Dialog, algo asi:  

ACTIVATE DIALOG oDlg ON INIT oCultar(oDlg)

Function oCultar(oDlg)
   AEval(oDlg:aControls,{|o| if(upper(o:ClassName()) == "TCOMBOBOX", o:Hide,) })
return nil

Re: Esconder control en dialogo[Solucionado]

Posted: Thu Apr 23, 2020 7:14 pm
by jvtecheto
Muchas gracias Angel y FranciscoA

Muy buenas las funciones , yo no necesito tanto, pero al ver el codigo he comprendido que hay que llamar al metodo Hide() asi.

Code: Select all

oDlg:aControls[1]:Hide()
 
Con esto solucionado.

Saludos.

Jose.