Page 1 of 1

Ayuda No puedo Mostrar Boton en Dialogo con Xbrowse

Posted: Mon Dec 02, 2019 9:42 pm
by remtec
Amigos muy buenas tardes.

Tengo un Problema, necesito mostrar un boton, dependiendo del Valor que toma una variable, segun se cumple cierta condición.

La variable " cAgendar ", toma valor "N" o "S", en una función al seleccionar un dia de atención, debe mostrar un Boton al tomar valor "S", pero en el dialogo, nunca actualiza o cambia su valor, por lo que jamas muestra el boton.

Muchos Saludos
Antonio

Dejo el codigo:

Code: Select all

               @ 30, 10 XBROWSE oBrw3 SIZE 110,86 PIXEL OF oDlg3;
                        DATASOURCE aAgenda ;
                        COLUMNS 1,2,3,4,5,6,7;
                        HEADERS "LU","MA","MI","JU","VI","SA","DO";
                            CELL LINES BORDER;
                            ColSizes 29,29,29,29,29,29,29


                            oBrw3:lRecordSelector      := .f.
                        oBrw3:nColDividerStyle := LINESTYLE_INSET
                        oBrw3:nRowDividerStyle := LINESTYLE_INSET
                            oBrw3:nOpacity    := 230
                            oBrw3:SetStyle( 2018)
                            oBrw3:nColorPen := CLR_RED
                            oBrw3:lHScroll := .F. // Barra Horizontal
                            oBrw3:lVScroll := .F. // Barra Ventical
                            oBrw3:nFreeze       := 7
                            For i=1 to 7
                                     oBrw3:aCols[ i ]:oDataFont := oFont2
                                     oBrw3:aCols[ i]:nDataStrAlign := AL_CENTER
                                     oBrw3:aCols[ i ]:cEditPicture := "DD"

                            Next i
                            WITH OBJECT oBrw3
                                :bLDblClick:={||(Sele_Dia(oBrw3: SelectedCol (): Value,cPro1,cEsp1,otitu1,@cAgendar)),oDlg3:Refresh()} // Aqui mando a la Funcion
                            END

                        oBrw3:CreateFromCode()

                 @ 18,10 BTNBMP oBoto1 SIZE 10,10 OF oDlg3 PIXEL 2007 Resource "PREV" ;
                    ACTION (Cambia_Mes(Mes1,Ano1,-1,@oBrw3,@otitu3),oBrw3:Refresh(),otitu3:Refresh(),oBoto1:Refresh(),oBoto2:Refresh(),oGroup1:Refresh(),otitu2:Refresh())

                 @ 18,109 BTNBMP oBoto2 SIZE 10,10 OF oDlg3 PIXEL 2007 Resource "NEXT";
                    ACTION (Cambia_Mes(Mes1,Ano1,1,@oBrw3,@otitu3),oBrw3:Refresh(),otitu3:Refresh(),oBoto1:Refresh(),oBoto2:Refresh(),oGroup1:Refresh(),otitu2:Refresh())

                 ** Segundo Xbrowse Agenda


                 @ 30,135 XBROWSE oBrw4 SIZE -10,-25 PIXEL OF oDlg3 DATASOURCE "Agen" FONT oFont3 ;
                        HEADERS 'Nro','Hora Ate','Nombre del Paciente','R.u.t.','Celular';
                      COLUMNS 'Nro_Hor', 'Hor_Ate','Nom_Pac','Rut_Pac','Cel_Pac';
                        COLSIZES 40, 70, 250, 90, 90;
                        PICTURES '999','##:##','@!','@!','@!';
                CELL LINES AUTOSORT NOBORDER;
                             oBrw4:nMarqueeStyle := MARQSTYLE_HIGHLWIN7
                             oBrw4:nColDividerStyle := LINESTYLE_INSET
                             oBrw4:nRowDividerStyle := LINESTYLE_INSET
                                 oBrw4:bClrHeader := {|| { nRGB(000,000,000), nRGB(128,255,128) } }
                                 oBrw4:aCols[2]:bClrHeader := { || { CLR_HRED,CLR_WHITE } }
                                 oBrw4:aCols[ 2 ]:oDataFont := oFont2

                                 oBrw4:aCols[2]:nHeadStrAlign := AL_CENTER          
                                 oBrw4:aCols[2]:nDataStrAlign := AL_CENTER
                                 //oBrw2:nHeadStrAligns := { AL_LEFT, AL_RIGHT, AL_CENTER, ...... }       
                                 oBrw4:nOpacity    := 230
                                 oBrw4:nHeaderHeight      := 35
                                 oBrw4:nFreeze       := 5
                                oBrw4:CreateFromCode()
                  If cAgendar=="S"
                    @ 200,120 BTNBMP  SIZE 55,50 PROMPT "CREA" OF oDlg2 PIXEL 2007 Resource "#8021" FONT oFont1 ;  // Aqui debo Mostra Boton
                                    ToolTip "GENERA AGENDA"

                 Endif
                
              ACTIVATE DIALOG oDlg3 CENTERED

Return

Function Sele_Dia(FechaHoy,cPro1,cEsp1,otitu1,cAgemdar)

        If Dtoc(FechaHoy)=="  /  /    "
         MsgStop( "Error DIa sin Valor ")
             return
        Endif
        If (Dtos(FechaHoy) < Dtos(Date()))
          MsgStop( "Error, No puede Seleccionar Fecha Menor a Hoy")
                return .f.
        Endif
      cVar=cPro1 + cEsp1 + Dtos(FechaHoy)
      Sele Agen
      Agen->(OrdScope(TOPSCOPE, cVar))
      Agen->(OrdScope(BOTTOMSCOPE, cVar))
      Agen->(DbGotop())
        If Eof()
             cAgendar:="S"
        Else
             cAgendar:="N"
        Endif
        otitu1:SetText("AGENDAR HORAS FECHA "+dtoc(FechaHoy))
        otitu1:UpDate()

        Return



 

Re: Ayuda No puedo Mostrar Boton en Dialogo con Xbrowse

Posted: Mon Dec 02, 2019 10:00 pm
by Cgallegoa
Hola,

Me da la impresión que el diálogo ya está construido cuando ejecutas la function Sele_Dia() en el bLDblClick del xBrowse. Si he interpretado bien tu código te sugiero que definas el boton al momento del construir el diálogo

Code: Select all

 @ 200,120 BTNBMP  oBtnxx SIZE 55,50 PROMPT "CREA"....
y luego con oBtnxx:Hide() o oBtnxx:Show() lo puedes mostrar u ocultar dependiendo el valor de cAgendar.

Tu bLDblClick podría quedar así:

Code: Select all

:bLDblClick:={||(Sele_Dia(oBrw3: SelectedCol (): Value,cPro1,cEsp1,otitu1,@cAgendar)),iif(cAgendar=="S",oBtnxx:Show(),oBtnxx:Hide()),oDlg:Refresh()} // Aqui mando a la Funcion
Es una idea, prueba y me cuentas.

Re: Ayuda No puedo Mostrar Boton en Dialogo con Xbrowse

Posted: Mon Dec 02, 2019 11:11 pm
by remtec
Hola Carlos

Muchas gracias por tu ayuda y por tu tiempo dedicado.

Funciono PERFECTO.

Muchos Saludos

Antonio

Re: Ayuda No puedo Mostrar Boton en Dialogo con Xbrowse

Posted: Mon Dec 02, 2019 11:28 pm
by Cgallegoa
Antonio, con mucho gusto, y me alegro que te funcionara.