Page 1 of 1

Socorro!! No lo encuentro :) (Solucionado)

PostPosted: Fri Jun 23, 2017 2:00 pm
by jose_murugosa
Busco por todos lados en el foro y se que lo vi, pero no encuentro los topics sobre como colocar la línea de gets arriba del xbrowse para incremental seek, alguien me podría tirar al menos un link?
Perdón, debe ser cosa de la edad :)

Re: Socorro!! No lo encuentro :)

PostPosted: Fri Jun 23, 2017 2:11 pm
by karinha
Busque en el foro por:

busqueda incremental con Xbrowse.

Saludos.

Re: Socorro!! No lo encuentro :)

PostPosted: Fri Jun 23, 2017 2:20 pm
by juan_arroyo_t
Jose

Yo lo hago asi :
Code: Select all  Expand view
DEFINE WINDOW oWChild mdichild of oApp:oWnd title "Control de Personal" ;
      from 00,00 TO 00,00 nomaximize

   DEFINE FONT  fBusca  NAME "Tahoma" SIZE 0,-12 bold     OF oDlg

   DEFINE BUTTONBAR oBar OF oWChild SIZE 40, 40 2007

   DEFINE BUTTON aoBtn[1] ;
      RESOURCE "BMP_AGREGAR" ;
      OF oBar FLAT GROUP ;
      ACTION ( f_Empleados(1), cFoto := oApp:xDatos + "Fotos\" + (cAliasPer)->numemp + ".JPG", ;
               PonFoto(oImage,cFoto,oDlg), oDlg:Update(), oBrw:refresh() ) ;      //Agrega_Empleado
      MESSAGE "
Agregar un empleado" ;
      TOOLTIP "
Agregar un empleado"

   DEFINE BUTTON aoBtn[2] ;
      RESOURCE "
BMP_MODIFICAR" ;
      OF oBar FLAT ;
      ACTION ( f_Empleados(4), cFoto := oApp:xDatos + "
Fotos\" + (cAliasPer)->numemp + ".JPG", ;
               PonFoto(oImage,cFoto,oDlg), oDlg:Update(), oBrw:refresh() ) WHEN (cAliasPer)->(LastRec()) > 0 ;      //Modifica empleado
      MESSAGE "
Modificar un empleado" ;
      TOOLTIP "
Modificar un empleado"

   DEFINE BUTTON aoBtn[3] ;
      RESOURCE "
BMP_CONSULTAR" ;
      OF oBar FLAT ;
      ACTION ( f_Empleados(2), oBrw:refresh(), oBrw:SetFocus() ) WHEN (cAliasPer)->(LastRec()) > 0 ;      //Consulta empleado
      MESSAGE "
Consultar un empleado" ;
      TOOLTIP "
Consultar un empleado"

   DEFINE BUTTON aoBtn[4] ;
      RESOURCE "
BASURA" ;
      OF oBar FLAT ;
      ACTION ( f_Empleados(3), oBrw:refresh(), oBrw:SetFocus() ) WHEN (cAliasPer)->(LastRec()) > 0 ;      //Elimina empleado
      MESSAGE "
Eliminar un empleado" ;
      TOOLTIP "
Eliminar un empleado"

   DEFINE BUTTON aoBtn[5] ;
      RESOURCE "
REINGRESO32" ;
      OF oBar FLAT GROUP ;
      ACTION ( Agrega_Reingreso( @cSay1, @cSay6, oDlg ), oBrw:refresh(), oBrw:SetFocus() ) WHEN (cAliasPer)->(LastRec()) > 0 ;         //Reingreos de personal
      MESSAGE "
Reingresos" ;
      TOOLTIP "
Reingresos"

   DEFINE BUTTON aoBtn[6] ;
      RESOURCE "
BMP_BORRAR" ;
      OF oBar FLAT ;
      ACTION ( Baja_Empleado( cSay1, oDlg), oBrw:refresh(), oBrw:SetFocus() ) WHEN (cAliasPer)->(LastRec()) > 0 ;      //Dar de baja un empleado
      MESSAGE "
Dar de baja un empleado" ;
      TOOLTIP "
Dar de baja un empleado"

   DEFINE BUTTON aoBtn[7] ;
      RESOURCE "
IMPRE32" ;
      OF oBar FLAT GROUP ;
      ACTION ImprimeEmpleado() WHEN (cAliasPer)->(LastRec()) > 0 ;
      MESSAGE "
Imprimir empleado" ;
      TOOLTIP "
Imprimir empleado"

   DEFINE DIALOG oDlg RESOURCE "
DLG_PERSONAL" OF oWChild TRANSPARENT

      oBrw := TXBrowse():New( oDlg )
      oBrw :CreateFromResource(500)
      oBrw :cAlias := (cAliasPer)

      oBrw :nMarqueeStyle       := MARQSTYLE_HIGHLROW
      oBrw :nColDividerStyle    := LINESTYLE_LIGHTGRAY
      oBrw :nRowDividerStyle    := LINESTYLE_LIGHTGRAY
      oBrw :lColDividerComplete := .t.
      oBrw :bClrStd    := { || If( oBrw:KeyNo() % 2 == 0, ;
                                   { CLR_BLACK, RGB( 224, 236, 255 ) }, ;
                                 { CLR_BLACK, RGB( 189, 211, 253 ) } ) }
      oBrw :bClrSel       := {|| { nRGB(  0,  0,255), aGradBarSel } }  // para barra de linea selecc cuando el control no tiene el foco
      oBrw :bClrSelFocus := { || { CLR_BLACK, aGradBarSelFocus } }     // para barra de linea selecc cuando el control tiene el foco

      oBrw :nFreeze             := 1
      oBrw :nFooterLines        := 1

      oCol := oBrw:AddCol()
      oCol:bStrData  := { || (cAliasPer)->numemp }
      oCol:cHeader   := "
Empleado"
      oCol:nWidth        := 70
      oCol:nDataStrAlign := AL_LEFT
      oCol:bLClickHeader := { || CambiaIndice( cAliasPer, 1, oBrw, @cSayInd, oDlg ), oBrw:gotop() }

      oCol := oBrw:AddCol()
      oCol:bStrData := { || (cAliasPer)->nomcom}
      oCol:cHeader  := "
Nombre"
      oCol:nWidth        := 300
      oCol:nDataStrAlign := AL_LEFT
      oCol:bLClickHeader := { || CambiaIndice( cAliasPer, 2, oBrw, @cSayInd, oDlg ), oBrw:gotop() }

      oBrw:bKeyChar := {|nKey| IIF(nKey=13,f_Empleados(2),) }

      oBrw:bChange := {|nKey| (cSay1 := iif(EMPTY((cAliasPer)->fecbaj), "
Activo", "Baja"), ;
                               cSay2 := ALLTRIM((cAliasPer)->puesto), ;
                               cSay3 := (cAliasPer)->numemp, ;
                               cSay4 := ALLTRIM((cAliasPer)->regfed), ;
                               cSay5 := ALLTRIM((cAliasPer)->regims), ;
                               cSay6 := PoneFecha( @cSay6, oDlg), ;
                               cSay7 := DToC((cAliasPer)->fecbaj), ;
                               cFoto := oApp:xDatos + "
Fotos\" + (cAliasPer)->numemp + ".JPG", ;
                               iif(!file(cFoto), (cFoto := oApp:xDatos + "
Fotos\" + "nohayfoto.JPG"),), ;
                               PonFoto(oImage,cFoto,oDlg), ;
                               oDlg:Update() ) }

      oBrw:bLDblClick:= { || f_Empleados(2) }             //si hacemos doble click sobre una PERSONA la seleccinamos y cargamos sus datos en las viables que necesitamos

      oBrw:bSeek := { |c| (cAliasPer)->(DbSeek( Upper(c) )) }

   REDEFINE SAY aoSay[1] VAR cSayInd ID 700 OF oDlg UPDATE ;
      COLOR CLR_BLUE FONT fBusca

   REDEFINE SAY oSay[2] oBrw:oSeek PROMPT Upper(oBrw:cSeek) ID 701 OF oDlg UPDATE ;
      COLOR CLR_BLUE FONT fBusca

   REDEFINE SAY aoSay[1] VAR cSay1       ID 301 OF oDlg UPDATE      // status

   REDEFINE IMAGE oImage VAR cFoto       ID 601 OF oDlg UPDATE ;
      ADJUST


   REDEFINE SAY aoSay[2] VAR cSay2       ID 302 OF oDlg UPDATE       // puesto

   REDEFINE SAY aoSay[3] VAR cSay3       ID 303 OF oDlg UPDATE       // numero de empleado

   REDEFINE SAY aoSay[4] VAR cSay4       ID 304 OF oDlg UPDATE ;     // reg fed causantes
      PICTURE "
@R XXXX--999999--XXX"

   REDEFINE SAY aoSay[5] VAR cSay5       ID 305 OF oDlg UPDATE ;     // reg imss
      PICTURE "
@R 99--99--99--9999--9"

   REDEFINE SAY aoSay[6] VAR cSay6       ID 306 OF oDlg UPDATE       // fecha de ingreso

   REDEFINE SAY aoSay[7] VAR cSay7       ID 307 OF oDlg UPDATE       // fecha de baja

   ACTIVATE DIALOG oDlg Valid oWChild:End() nowait on init (oninit( oDlg ), PonFoto(oImage,cFoto,odlg), oBrw:gotop()); oDlg:move(0,0)
      oWChild:bgotfocus:={||oDlg:setfocus()}

   ACTIVATE WINDOW oWChild ON INIT (oWChild:setsize(oDlg:nwidth,oDlg:nheight), oWChild:Move(20,20)) ;
      VALID (DbCerrar( oWChild, cMen, 2 ))

RETURN NIL


Espero te sirva

Saludos

Re: Socorro!! No lo encuentro :)

PostPosted: Fri Jun 23, 2017 3:40 pm
by cnavarro
Code: Select all  Expand view

        :lSeekBar         := .T.
         AEVal( :aCols, { | o | o:bClrEdit := { || { CLR_RED, CLR_WHITE } } } )

 

Re: Socorro!! No lo encuentro :)

PostPosted: Fri Jun 23, 2017 3:53 pm
by joseluisysturiz
jose_murugosa wrote:Busco por todos lados en el foro y se que lo vi, pero no encuentro los topics sobre como colocar la línea de gets arriba del xbrowse para incremental seek, alguien me podría tirar al menos un link?
Perdón, debe ser cosa de la edad :)


Haber si sirve, saludos... :shock:

viewtopic.php?f=3&t=33404&start=0&hilit=CreateFromCode

Re: Socorro!! No lo encuentro :)

PostPosted: Fri Jun 23, 2017 5:03 pm
by jose_murugosa
Gracias a todos!!!!!!

Que comunidad maravillosa..!!

La búsqueda ya la había intentado pero no aparece, pero con vuestra ayuda y mucha perseverancia entendí como funciona, gracias Cristobal por el ejemplo.

Luego de entenderlo como suele suceder, buscando otra cosa encontré el topic que buscaba, como dicen "no hay como NO necesitar algo para encontrarlo"

NUEVAMENTE GRACIAS, ya está implementado y "pistoneando" :)

Re: Socorro!! No lo encuentro :)

PostPosted: Sat Jul 01, 2017 4:17 am
by ACC69
juan_arroyo_t wrote:Jose

Yo lo hago asi :
Code: Select all  Expand view
DEFINE WINDOW oWChild mdichild of oApp:oWnd title "Control de Personal" ;
      from 00,00 TO 00,00 nomaximize

   DEFINE FONT  fBusca  NAME "Tahoma" SIZE 0,-12 bold     OF oDlg

   DEFINE BUTTONBAR oBar OF oWChild SIZE 40, 40 2007

   DEFINE BUTTON aoBtn[1] ;
      RESOURCE "BMP_AGREGAR" ;
      OF oBar FLAT GROUP ;
      ACTION ( f_Empleados(1), cFoto := oApp:xDatos + "Fotos\" + (cAliasPer)->numemp + ".JPG", ;
               PonFoto(oImage,cFoto,oDlg), oDlg:Update(), oBrw:refresh() ) ;      //Agrega_Empleado
      MESSAGE "
Agregar un empleado" ;
      TOOLTIP "
Agregar un empleado"

   DEFINE BUTTON aoBtn[2] ;
      RESOURCE "
BMP_MODIFICAR" ;
      OF oBar FLAT ;
      ACTION ( f_Empleados(4), cFoto := oApp:xDatos + "
Fotos\" + (cAliasPer)->numemp + ".JPG", ;
               PonFoto(oImage,cFoto,oDlg), oDlg:Update(), oBrw:refresh() ) WHEN (cAliasPer)->(LastRec()) > 0 ;      //Modifica empleado
      MESSAGE "
Modificar un empleado" ;
      TOOLTIP "
Modificar un empleado"

   DEFINE BUTTON aoBtn[3] ;
      RESOURCE "
BMP_CONSULTAR" ;
      OF oBar FLAT ;
      ACTION ( f_Empleados(2), oBrw:refresh(), oBrw:SetFocus() ) WHEN (cAliasPer)->(LastRec()) > 0 ;      //Consulta empleado
      MESSAGE "
Consultar un empleado" ;
      TOOLTIP "
Consultar un empleado"

   DEFINE BUTTON aoBtn[4] ;
      RESOURCE "
BASURA" ;
      OF oBar FLAT ;
      ACTION ( f_Empleados(3), oBrw:refresh(), oBrw:SetFocus() ) WHEN (cAliasPer)->(LastRec()) > 0 ;      //Elimina empleado
      MESSAGE "
Eliminar un empleado" ;
      TOOLTIP "
Eliminar un empleado"

   DEFINE BUTTON aoBtn[5] ;
      RESOURCE "
REINGRESO32" ;
      OF oBar FLAT GROUP ;
      ACTION ( Agrega_Reingreso( @cSay1, @cSay6, oDlg ), oBrw:refresh(), oBrw:SetFocus() ) WHEN (cAliasPer)->(LastRec()) > 0 ;         //Reingreos de personal
      MESSAGE "
Reingresos" ;
      TOOLTIP "
Reingresos"

   DEFINE BUTTON aoBtn[6] ;
      RESOURCE "
BMP_BORRAR" ;
      OF oBar FLAT ;
      ACTION ( Baja_Empleado( cSay1, oDlg), oBrw:refresh(), oBrw:SetFocus() ) WHEN (cAliasPer)->(LastRec()) > 0 ;      //Dar de baja un empleado
      MESSAGE "
Dar de baja un empleado" ;
      TOOLTIP "
Dar de baja un empleado"

   DEFINE BUTTON aoBtn[7] ;
      RESOURCE "
IMPRE32" ;
      OF oBar FLAT GROUP ;
      ACTION ImprimeEmpleado() WHEN (cAliasPer)->(LastRec()) > 0 ;
      MESSAGE "
Imprimir empleado" ;
      TOOLTIP "
Imprimir empleado"

   DEFINE DIALOG oDlg RESOURCE "
DLG_PERSONAL" OF oWChild TRANSPARENT

      oBrw := TXBrowse():New( oDlg )
      oBrw :CreateFromResource(500)
      oBrw :cAlias := (cAliasPer)

      oBrw :nMarqueeStyle       := MARQSTYLE_HIGHLROW
      oBrw :nColDividerStyle    := LINESTYLE_LIGHTGRAY
      oBrw :nRowDividerStyle    := LINESTYLE_LIGHTGRAY
      oBrw :lColDividerComplete := .t.
      oBrw :bClrStd    := { || If( oBrw:KeyNo() % 2 == 0, ;
                                   { CLR_BLACK, RGB( 224, 236, 255 ) }, ;
                                 { CLR_BLACK, RGB( 189, 211, 253 ) } ) }
      oBrw :bClrSel       := {|| { nRGB(  0,  0,255), aGradBarSel } }  // para barra de linea selecc cuando el control no tiene el foco
      oBrw :bClrSelFocus := { || { CLR_BLACK, aGradBarSelFocus } }     // para barra de linea selecc cuando el control tiene el foco

      oBrw :nFreeze             := 1
      oBrw :nFooterLines        := 1

      oCol := oBrw:AddCol()
      oCol:bStrData  := { || (cAliasPer)->numemp }
      oCol:cHeader   := "
Empleado"
      oCol:nWidth        := 70
      oCol:nDataStrAlign := AL_LEFT
      oCol:bLClickHeader := { || CambiaIndice( cAliasPer, 1, oBrw, @cSayInd, oDlg ), oBrw:gotop() }

      oCol := oBrw:AddCol()
      oCol:bStrData := { || (cAliasPer)->nomcom}
      oCol:cHeader  := "
Nombre"
      oCol:nWidth        := 300
      oCol:nDataStrAlign := AL_LEFT
      oCol:bLClickHeader := { || CambiaIndice( cAliasPer, 2, oBrw, @cSayInd, oDlg ), oBrw:gotop() }

      oBrw:bKeyChar := {|nKey| IIF(nKey=13,f_Empleados(2),) }

      oBrw:bChange := {|nKey| (cSay1 := iif(EMPTY((cAliasPer)->fecbaj), "
Activo", "Baja"), ;
                               cSay2 := ALLTRIM((cAliasPer)->puesto), ;
                               cSay3 := (cAliasPer)->numemp, ;
                               cSay4 := ALLTRIM((cAliasPer)->regfed), ;
                               cSay5 := ALLTRIM((cAliasPer)->regims), ;
                               cSay6 := PoneFecha( @cSay6, oDlg), ;
                               cSay7 := DToC((cAliasPer)->fecbaj), ;
                               cFoto := oApp:xDatos + "
Fotos\" + (cAliasPer)->numemp + ".JPG", ;
                               iif(!file(cFoto), (cFoto := oApp:xDatos + "
Fotos\" + "nohayfoto.JPG"),), ;
                               PonFoto(oImage,cFoto,oDlg), ;
                               oDlg:Update() ) }

      oBrw:bLDblClick:= { || f_Empleados(2) }             //si hacemos doble click sobre una PERSONA la seleccinamos y cargamos sus datos en las viables que necesitamos

      oBrw:bSeek := { |c| (cAliasPer)->(DbSeek( Upper(c) )) }

   REDEFINE SAY aoSay[1] VAR cSayInd ID 700 OF oDlg UPDATE ;
      COLOR CLR_BLUE FONT fBusca

   REDEFINE SAY oSay[2] oBrw:oSeek PROMPT Upper(oBrw:cSeek) ID 701 OF oDlg UPDATE ;
      COLOR CLR_BLUE FONT fBusca

   REDEFINE SAY aoSay[1] VAR cSay1       ID 301 OF oDlg UPDATE      // status

   REDEFINE IMAGE oImage VAR cFoto       ID 601 OF oDlg UPDATE ;
      ADJUST


   REDEFINE SAY aoSay[2] VAR cSay2       ID 302 OF oDlg UPDATE       // puesto

   REDEFINE SAY aoSay[3] VAR cSay3       ID 303 OF oDlg UPDATE       // numero de empleado

   REDEFINE SAY aoSay[4] VAR cSay4       ID 304 OF oDlg UPDATE ;     // reg fed causantes
      PICTURE "
@R XXXX--999999--XXX"

   REDEFINE SAY aoSay[5] VAR cSay5       ID 305 OF oDlg UPDATE ;     // reg imss
      PICTURE "
@R 99--99--99--9999--9"

   REDEFINE SAY aoSay[6] VAR cSay6       ID 306 OF oDlg UPDATE       // fecha de ingreso

   REDEFINE SAY aoSay[7] VAR cSay7       ID 307 OF oDlg UPDATE       // fecha de baja

   ACTIVATE DIALOG oDlg Valid oWChild:End() nowait on init (oninit( oDlg ), PonFoto(oImage,cFoto,odlg), oBrw:gotop()); oDlg:move(0,0)
      oWChild:bgotfocus:={||oDlg:setfocus()}

   ACTIVATE WINDOW oWChild ON INIT (oWChild:setsize(oDlg:nwidth,oDlg:nheight), oWChild:Move(20,20)) ;
      VALID (DbCerrar( oWChild, cMen, 2 ))

RETURN NIL


Espero te sirva

Saludos


Hola a todos mis estimados Ingenieros, a mi me hubiera encantado y es mi PETICION que la busqueda sea con el control Get por ser mas estetico y funcional que el control say, ya que anteriormente los usuarios segun me comentan que se les hace raro que no se posicione en el focus say y eso me he dado cuenta a lo largo de los años que les deje la consulta de catalogo por el control say a mi tampoco me gusto pero funciona la busqueda...,pero bueno espero que el maestro y autor de Txbrowse el maestro Nages Rao nos pueda apoyar a que sea mas estetico la busqueda secuencial por el control Get...

Por lo que explore en el foro ya nuevas novedades y yo ando desactualizado...

Saludos

Atte: Adriano C. C.
acc69@hotmail.com

Re: Socorro!! No lo encuentro :)

PostPosted: Sat Jul 01, 2017 2:33 pm
by joseluisysturiz
ACC69 wrote:
juan_arroyo_t wrote:Jose

Yo lo hago asi :
Code: Select all  Expand view
DEFINE WINDOW oWChild mdichild of oApp:oWnd title "Control de Personal" ;
      from 00,00 TO 00,00 nomaximize

   DEFINE FONT  fBusca  NAME "Tahoma" SIZE 0,-12 bold     OF oDlg

   DEFINE BUTTONBAR oBar OF oWChild SIZE 40, 40 2007

   DEFINE BUTTON aoBtn[1] ;
      RESOURCE "BMP_AGREGAR" ;
      OF oBar FLAT GROUP ;
      ACTION ( f_Empleados(1), cFoto := oApp:xDatos + "Fotos\" + (cAliasPer)->numemp + ".JPG", ;
               PonFoto(oImage,cFoto,oDlg), oDlg:Update(), oBrw:refresh() ) ;      //Agrega_Empleado
      MESSAGE "
Agregar un empleado" ;
      TOOLTIP "
Agregar un empleado"

   DEFINE BUTTON aoBtn[2] ;
      RESOURCE "
BMP_MODIFICAR" ;
      OF oBar FLAT ;
      ACTION ( f_Empleados(4), cFoto := oApp:xDatos + "
Fotos\" + (cAliasPer)->numemp + ".JPG", ;
               PonFoto(oImage,cFoto,oDlg), oDlg:Update(), oBrw:refresh() ) WHEN (cAliasPer)->(LastRec()) > 0 ;      //Modifica empleado
      MESSAGE "
Modificar un empleado" ;
      TOOLTIP "
Modificar un empleado"

   DEFINE BUTTON aoBtn[3] ;
      RESOURCE "
BMP_CONSULTAR" ;
      OF oBar FLAT ;
      ACTION ( f_Empleados(2), oBrw:refresh(), oBrw:SetFocus() ) WHEN (cAliasPer)->(LastRec()) > 0 ;      //Consulta empleado
      MESSAGE "
Consultar un empleado" ;
      TOOLTIP "
Consultar un empleado"

   DEFINE BUTTON aoBtn[4] ;
      RESOURCE "
BASURA" ;
      OF oBar FLAT ;
      ACTION ( f_Empleados(3), oBrw:refresh(), oBrw:SetFocus() ) WHEN (cAliasPer)->(LastRec()) > 0 ;      //Elimina empleado
      MESSAGE "
Eliminar un empleado" ;
      TOOLTIP "
Eliminar un empleado"

   DEFINE BUTTON aoBtn[5] ;
      RESOURCE "
REINGRESO32" ;
      OF oBar FLAT GROUP ;
      ACTION ( Agrega_Reingreso( @cSay1, @cSay6, oDlg ), oBrw:refresh(), oBrw:SetFocus() ) WHEN (cAliasPer)->(LastRec()) > 0 ;         //Reingreos de personal
      MESSAGE "
Reingresos" ;
      TOOLTIP "
Reingresos"

   DEFINE BUTTON aoBtn[6] ;
      RESOURCE "
BMP_BORRAR" ;
      OF oBar FLAT ;
      ACTION ( Baja_Empleado( cSay1, oDlg), oBrw:refresh(), oBrw:SetFocus() ) WHEN (cAliasPer)->(LastRec()) > 0 ;      //Dar de baja un empleado
      MESSAGE "
Dar de baja un empleado" ;
      TOOLTIP "
Dar de baja un empleado"

   DEFINE BUTTON aoBtn[7] ;
      RESOURCE "
IMPRE32" ;
      OF oBar FLAT GROUP ;
      ACTION ImprimeEmpleado() WHEN (cAliasPer)->(LastRec()) > 0 ;
      MESSAGE "
Imprimir empleado" ;
      TOOLTIP "
Imprimir empleado"

   DEFINE DIALOG oDlg RESOURCE "
DLG_PERSONAL" OF oWChild TRANSPARENT

      oBrw := TXBrowse():New( oDlg )
      oBrw :CreateFromResource(500)
      oBrw :cAlias := (cAliasPer)

      oBrw :nMarqueeStyle       := MARQSTYLE_HIGHLROW
      oBrw :nColDividerStyle    := LINESTYLE_LIGHTGRAY
      oBrw :nRowDividerStyle    := LINESTYLE_LIGHTGRAY
      oBrw :lColDividerComplete := .t.
      oBrw :bClrStd    := { || If( oBrw:KeyNo() % 2 == 0, ;
                                   { CLR_BLACK, RGB( 224, 236, 255 ) }, ;
                                 { CLR_BLACK, RGB( 189, 211, 253 ) } ) }
      oBrw :bClrSel       := {|| { nRGB(  0,  0,255), aGradBarSel } }  // para barra de linea selecc cuando el control no tiene el foco
      oBrw :bClrSelFocus := { || { CLR_BLACK, aGradBarSelFocus } }     // para barra de linea selecc cuando el control tiene el foco

      oBrw :nFreeze             := 1
      oBrw :nFooterLines        := 1

      oCol := oBrw:AddCol()
      oCol:bStrData  := { || (cAliasPer)->numemp }
      oCol:cHeader   := "
Empleado"
      oCol:nWidth        := 70
      oCol:nDataStrAlign := AL_LEFT
      oCol:bLClickHeader := { || CambiaIndice( cAliasPer, 1, oBrw, @cSayInd, oDlg ), oBrw:gotop() }

      oCol := oBrw:AddCol()
      oCol:bStrData := { || (cAliasPer)->nomcom}
      oCol:cHeader  := "
Nombre"
      oCol:nWidth        := 300
      oCol:nDataStrAlign := AL_LEFT
      oCol:bLClickHeader := { || CambiaIndice( cAliasPer, 2, oBrw, @cSayInd, oDlg ), oBrw:gotop() }

      oBrw:bKeyChar := {|nKey| IIF(nKey=13,f_Empleados(2),) }

      oBrw:bChange := {|nKey| (cSay1 := iif(EMPTY((cAliasPer)->fecbaj), "
Activo", "Baja"), ;
                               cSay2 := ALLTRIM((cAliasPer)->puesto), ;
                               cSay3 := (cAliasPer)->numemp, ;
                               cSay4 := ALLTRIM((cAliasPer)->regfed), ;
                               cSay5 := ALLTRIM((cAliasPer)->regims), ;
                               cSay6 := PoneFecha( @cSay6, oDlg), ;
                               cSay7 := DToC((cAliasPer)->fecbaj), ;
                               cFoto := oApp:xDatos + "
Fotos\" + (cAliasPer)->numemp + ".JPG", ;
                               iif(!file(cFoto), (cFoto := oApp:xDatos + "
Fotos\" + "nohayfoto.JPG"),), ;
                               PonFoto(oImage,cFoto,oDlg), ;
                               oDlg:Update() ) }

      oBrw:bLDblClick:= { || f_Empleados(2) }             //si hacemos doble click sobre una PERSONA la seleccinamos y cargamos sus datos en las viables que necesitamos

      oBrw:bSeek := { |c| (cAliasPer)->(DbSeek( Upper(c) )) }

   REDEFINE SAY aoSay[1] VAR cSayInd ID 700 OF oDlg UPDATE ;
      COLOR CLR_BLUE FONT fBusca

   REDEFINE SAY oSay[2] oBrw:oSeek PROMPT Upper(oBrw:cSeek) ID 701 OF oDlg UPDATE ;
      COLOR CLR_BLUE FONT fBusca

   REDEFINE SAY aoSay[1] VAR cSay1       ID 301 OF oDlg UPDATE      // status

   REDEFINE IMAGE oImage VAR cFoto       ID 601 OF oDlg UPDATE ;
      ADJUST


   REDEFINE SAY aoSay[2] VAR cSay2       ID 302 OF oDlg UPDATE       // puesto

   REDEFINE SAY aoSay[3] VAR cSay3       ID 303 OF oDlg UPDATE       // numero de empleado

   REDEFINE SAY aoSay[4] VAR cSay4       ID 304 OF oDlg UPDATE ;     // reg fed causantes
      PICTURE "
@R XXXX--999999--XXX"

   REDEFINE SAY aoSay[5] VAR cSay5       ID 305 OF oDlg UPDATE ;     // reg imss
      PICTURE "
@R 99--99--99--9999--9"

   REDEFINE SAY aoSay[6] VAR cSay6       ID 306 OF oDlg UPDATE       // fecha de ingreso

   REDEFINE SAY aoSay[7] VAR cSay7       ID 307 OF oDlg UPDATE       // fecha de baja

   ACTIVATE DIALOG oDlg Valid oWChild:End() nowait on init (oninit( oDlg ), PonFoto(oImage,cFoto,odlg), oBrw:gotop()); oDlg:move(0,0)
      oWChild:bgotfocus:={||oDlg:setfocus()}

   ACTIVATE WINDOW oWChild ON INIT (oWChild:setsize(oDlg:nwidth,oDlg:nheight), oWChild:Move(20,20)) ;
      VALID (DbCerrar( oWChild, cMen, 2 ))

RETURN NIL


Espero te sirva

Saludos


Hola a todos mis estimados Ingenieros, a mi me hubiera encantado y es mi PETICION que la busqueda sea con el control Get por ser mas estetico y funcional que el control say, ya que anteriormente los usuarios segun me comentan que se les hace raro que no se posicione en el focus say y eso me he dado cuenta a lo largo de los años que les deje la consulta de catalogo por el control say a mi tampoco me gusto pero funciona la busqueda...,pero bueno espero que el maestro y autor de Txbrowse el maestro Nages Rao nos pueda apoyar a que sea mas estetico la busqueda secuencial por el control Get...

Por lo que explore en el foro ya nuevas novedades y yo ando desactualizado...

Saludos

Atte: Adriano C. C.
acc69@hotmail.com


Totalmente de acuerdo y tampoco soy amante del SAY como objeto para la busqueda, ya que la falta del cursor como aparece en el GET hace que los usuarios se pierdan y mas que todo cuando retroceden para corregir el texto a buscar o si se qiere mover el cursor entre letras y no borrar la palabra completa de busqueda no se puede hacer...saludos... :shock:

Re: Socorro!! No lo encuentro :) (Solucionado)

PostPosted: Tue Jul 04, 2017 2:17 pm
by jose_murugosa
Gracias a todos por sus aportes!!!!! MUUUUUUCHAS GRACIAS. :D