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
↧