Hola,
Alguien agregó las características como excel, combobox a xbrowse en la parte superior de cada encabezado de colum, así que podría buscar cada datas colum.
hacer filtro
¡Atentamente!
agregar combobox a xbrowse en los header
Re: agregar combobox a xbrowse en los header
Hola amigos, ya que no hubo ningun comentario para modificar el xbrowse, tuve que hacerla manualmente y quedo asi:
Saludos
Saludos
Last edited by jbrita on Sun Aug 20, 2017 12:38 am, edited 1 time in total.
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: agregar combobox a xbrowse en los header
Buen dia, puedes compartir el codigo, saludos, gracias.
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
-
- Posts: 845
- Joined: Sun Oct 09, 2005 5:36 pm
- Location: la laguna, mexico.
-
- Posts: 105
- Joined: Thu Mar 16, 2017 4:08 pm
- Location: Ecuador
Re: agregar combobox a xbrowse en los header
Una gran característica; +1
Re: agregar combobox a xbrowse en los header
Hola, amigos ya que no me manejo en modificar la clase de xbrowse, tuve que improvisar:
En Botón en los Header puse una imagen:
oLbx:aCols[ 3 ]:AddResource("flecha"); oLbx:aCols[ 3 ]:nHeadBmpNo := 1;oLbx:aCols[ 3 ]:nHeadBmpAlign := AL_RIGHT
oLbx:aCols[ 4 ]:AddResource("flecha"); oLbx:aCols[ 4 ]:nHeadBmpNo := 1;oLbx:aCols[ 4 ]:nHeadBmpAlign := AL_RIGHT
en la posición del dialogo tuve que ver la posición y hacer algunos cálculos:
oLbx:aCols[3]:bLClickHeader := {|nRow, nCol| ShowPopup( nRow, nCol, 171,"estado" ,oLbx) }
oLbx:aCols[4]:bLClickHeader := {|nRow, nCol| ShowPopup( nRow, nCol, 244,"tipo" ,oLbx) }
el dialogo y xbrowse y llenado
function ShowPopup( nRow, nCol, lin,nFiltro,oLbx)
LOcal oDlg
local oWnd, aData := {}, i, oBrw, oBtn
Local cFiltro,nEstado
Local lAceptar:=.F.
AAdd(aData,"< Seleccionar Todos >" )
Do Case
Case nFiltro="estado"
cFiltro:=XServer:Query("SELECT estado FROM ordentrabajo WHERE sucursal='"+Alltrim(codagencia)+"' GROUP BY estado ORDER BY estado")
cFiltro:GoTop()
Do While !cFiltro:Eof()
AAdd(aData,If(cFiltro:estado=0,"ABIERTA","CERRADA") )
cFiltro:Skip(1) //Skip
ENDDO
cFiltro:End()
Case nFiltro="tipo"
cFiltro:=XServer:Query("SELECT tipo_orden FROM ordentrabajo WHERE sucursal='"+Alltrim(codagencia)+"' GROUP BY tipo_orden ORDER BY tipo_orden")
cFiltro:GoTop()
Do While !cFiltro:Eof()
AAdd(aData,cFiltro:tipo_orden )
cFiltro:Skip(1) //Skip
ENDDO
cFiltro:End()
EndCase
DEFINE DIALOG oDlg FROM 215, lin+240 TO nRow+500,lin+452 PIXEL STYLE WS_POPUP
@ 0, 0 XBROWSE oBrw OF oDlg ARRAY aData ;
PICTUREs "!!!!!!!!!!!!!!!!!!!";
AUTOCOLS ;
CELL ;
FASTEDIT
oBrw:lAllowColHiding := .f.
oBrw:CreateFromCode()
oBrw:lHeader := .F.
@ 6.2, 1 BUTTON "Aplicar" OF oDlg ACTION (lAceptar:=.T.,oDlg:End())
@ 6.2, 9 BUTTON "Cancelar" OF oDlg ACTION oDlg:End()
ACTIVATE DIALOG oDlg
If lAceptar
If AllTrim(aData[oBrw:nArrayAt])="< Seleccionar Todos >"
cOrden:=XServer:Query("SELECT * FROM ordentrabajo where sucursal='"+Alltrim(codagencia)+"' ORDER BY numero_orden")
cOrden:GoTop()
Else
Do Case
Case nFiltro="estado"
nEstado:=If (AllTrim(aData[oBrw:nArrayAt])="ABIERTA",0,1)
cOrden:=XServer:Query("SELECT * FROM ordentrabajo where sucursal='"+Alltrim(codagencia)+"' and estado='"+Str(nEstado)+"' ORDER BY numero_orden")
cOrden:GoTop()
Case nFiltro="tipo"
cOrden:=XServer:Query("SELECT * FROM ordentrabajo where sucursal='"+Alltrim(codagencia)+"' and tipo_orden='"+AllTrim(aData[oBrw:nArrayAt])+"' ORDER BY numero_orden")
cOrden:GoTop()
EndCase
Endif
Endif
SetDolphin( oLbx, cOrden,.f. )
cOrden:Refresh()
oLbx:Refresh(.t.)
oLbx:SetFocus()
return nil
y eso seria la magia, por eso les comentaba que lo tuve que hacer manualmente
espero que les ayude, ami me funciono
saludos
En Botón en los Header puse una imagen:
oLbx:aCols[ 3 ]:AddResource("flecha"); oLbx:aCols[ 3 ]:nHeadBmpNo := 1;oLbx:aCols[ 3 ]:nHeadBmpAlign := AL_RIGHT
oLbx:aCols[ 4 ]:AddResource("flecha"); oLbx:aCols[ 4 ]:nHeadBmpNo := 1;oLbx:aCols[ 4 ]:nHeadBmpAlign := AL_RIGHT
en la posición del dialogo tuve que ver la posición y hacer algunos cálculos:
oLbx:aCols[3]:bLClickHeader := {|nRow, nCol| ShowPopup( nRow, nCol, 171,"estado" ,oLbx) }
oLbx:aCols[4]:bLClickHeader := {|nRow, nCol| ShowPopup( nRow, nCol, 244,"tipo" ,oLbx) }
el dialogo y xbrowse y llenado
function ShowPopup( nRow, nCol, lin,nFiltro,oLbx)
LOcal oDlg
local oWnd, aData := {}, i, oBrw, oBtn
Local cFiltro,nEstado
Local lAceptar:=.F.
AAdd(aData,"< Seleccionar Todos >" )
Do Case
Case nFiltro="estado"
cFiltro:=XServer:Query("SELECT estado FROM ordentrabajo WHERE sucursal='"+Alltrim(codagencia)+"' GROUP BY estado ORDER BY estado")
cFiltro:GoTop()
Do While !cFiltro:Eof()
AAdd(aData,If(cFiltro:estado=0,"ABIERTA","CERRADA") )
cFiltro:Skip(1) //Skip
ENDDO
cFiltro:End()
Case nFiltro="tipo"
cFiltro:=XServer:Query("SELECT tipo_orden FROM ordentrabajo WHERE sucursal='"+Alltrim(codagencia)+"' GROUP BY tipo_orden ORDER BY tipo_orden")
cFiltro:GoTop()
Do While !cFiltro:Eof()
AAdd(aData,cFiltro:tipo_orden )
cFiltro:Skip(1) //Skip
ENDDO
cFiltro:End()
EndCase
DEFINE DIALOG oDlg FROM 215, lin+240 TO nRow+500,lin+452 PIXEL STYLE WS_POPUP
@ 0, 0 XBROWSE oBrw OF oDlg ARRAY aData ;
PICTUREs "!!!!!!!!!!!!!!!!!!!";
AUTOCOLS ;
CELL ;
FASTEDIT
oBrw:lAllowColHiding := .f.
oBrw:CreateFromCode()
oBrw:lHeader := .F.
@ 6.2, 1 BUTTON "Aplicar" OF oDlg ACTION (lAceptar:=.T.,oDlg:End())
@ 6.2, 9 BUTTON "Cancelar" OF oDlg ACTION oDlg:End()
ACTIVATE DIALOG oDlg
If lAceptar
If AllTrim(aData[oBrw:nArrayAt])="< Seleccionar Todos >"
cOrden:=XServer:Query("SELECT * FROM ordentrabajo where sucursal='"+Alltrim(codagencia)+"' ORDER BY numero_orden")
cOrden:GoTop()
Else
Do Case
Case nFiltro="estado"
nEstado:=If (AllTrim(aData[oBrw:nArrayAt])="ABIERTA",0,1)
cOrden:=XServer:Query("SELECT * FROM ordentrabajo where sucursal='"+Alltrim(codagencia)+"' and estado='"+Str(nEstado)+"' ORDER BY numero_orden")
cOrden:GoTop()
Case nFiltro="tipo"
cOrden:=XServer:Query("SELECT * FROM ordentrabajo where sucursal='"+Alltrim(codagencia)+"' and tipo_orden='"+AllTrim(aData[oBrw:nArrayAt])+"' ORDER BY numero_orden")
cOrden:GoTop()
EndCase
Endif
Endif
SetDolphin( oLbx, cOrden,.f. )
cOrden:Refresh()
oLbx:Refresh(.t.)
oLbx:SetFocus()
return nil
y eso seria la magia, por eso les comentaba que lo tuve que hacer manualmente
espero que les ayude, ami me funciono
saludos