goosfancito wrote:Asi es Mario,
Pero al momento de hacerle click a la columna 2, muuestra el triangulito pero no muestra ordenada la columna HASTA QUE sacas el mouse del mismo xbrowse o presionas tab y pasas el foco a otro control.
Con el solo hecho de sacar el mouse desde arriba del xbrowse ahi se entera que tiene que mostrar denuevo los datos y si! muestra esa columna 2 ordenada.
Gracias.
A ver si ayuda
- Code: Select all Expand view RUN
- WITH OBJECT oCol1
:cHeader:= "Código"
:nWidth := 60
:oHeaderFont:= ::hFont["SysFontB"]
:bStrData:= {|| StrZero( ::oQryIns:FieldGet( F_CodIns ),7 ) }
:bLClickHeader:= {|| ::SetColOrden( col_CodIns ) } // En cada columna que quiero cambiar el order, llamo a la funcion
END
...
PROCEDURE SetColOrden( nCol, lLike, lOrden ) CLASS TMantenimiento
DEFAULT lLike := FALSE, ;
lOrden:= TRUE
::oQryIns:Open( "SELECT T1.CodInsumo, T1.DescIns, T2.StkActU, T3.Existencia, T4.Cantidad, T1.IDInsumo " + ;
"FROM " +::aTablas[_TBINSUMOS] +" AS T1, " +::aTablas[_TBSTOCK1] +" AS T2, " + ;
::aTablas[_TBSTOCK2] +" AS T3, " +::aTablas[_TBSALI2S1]+" AS T4 " + ;
"WHERE T1.IDInsumo = T2.IDInsumo and T1.IDInsumo = T3.IDInsumo and T1.IDInsumo = T4.IDInsumo " + ;
if( lLike, if( !IsDigit(hS1:cLike), "and T1.DescIns REGEXP '"+hS1:cLike+"' ","and T1.CodInsumo LIKE '"+hS1:cLike+"%' "), "" ) + ;
if( lOrden, ;
" ORDER BY "+ if( nCol== 1, "T1.CodInsumo", ; // Acá decide como ordena la consulta
if( nCol== 2, "T1.DescIns", "T1.CodInsumo" )) + ;
if( Empty( ::oBrwIns ), " ASC", ;
if( ::oBrwIns:aCols[nCol]:cOrder == "A", " ASC", " DESC" ) ), "" ) )
if !Empty( ::oBrwIns )
aEval( ::oBrwIns:aCols, {|o,n| if( !n == nCol, o:cOrder:= "", ), if( n <= col_DescIns, o:oHeaderFont:= ::oBrwIns:oFont, ) })
if lOrden // Con esto decimos como se mostrará el ícono ASC/DESC
if ::oBrwIns:aCols[nCol]:cOrder == "A"
::oBrwIns:aCols[nCol]:cOrder:= "D"
elseif ::oBrwIns:aCols[nCol]:cOrder == "D"
::oBrwIns:aCols[nCol]:cOrder:= "A"
else
::oBrwIns:aCols[nCol]:cOrder:= "A"
end
end
// Cosmética
::oBrwIns:aCols[nCol]:oHeaderFont:= ::hFont["SysFontB"]
::oBrwIns:bClrHeader := {|| if( Empty( ::oBrwIns:aCols[nCol]:cOrder ), { CLR_BLACK, GetSysColor( COLOR_BTNFACE ) }, ;
{ CLR_GREEN, GetSysColor( COLOR_BTNFACE ) } ) }
::oBrwIns:Refresh()
end
// Fin