Txbrowse Column Sort Indicator

Txbrowse Column Sort Indicator

Postby INFORMAISVRB » Thu Nov 17, 2022 2:33 pm

Hello to all friends
There's a way to click on the Xbrowse column, it changes the sorting arrow according to the image

Arrow up and down

Image
OR
Image

CODE SAMPLE
Code: Select all  Expand view

oCol := oDB_forneced_SQL:AddCol()
oCol:bStrData  := { || STRZERO(forneced->CODFOR,06,0) }
oCol:cHeader   := "Código"
oCol:cFooter   := " "
oCol:nDataStrAlign := AL_LEFT
oCol:nHeadStrAlign := AL_LEFT
oCol:bLClickHeader := {|r,c,f,o| ( oDB_forneced_SQL:cFilterFld := 'CODFOR', PROCURA_FORNECED_SQL(cOrder,'CODFOR',1)    )}
oCol:cSortOrder := 'CODFOR'
oDB_forneced_SQL:aCols[01]:oHeaderFont := O_F_90_GRAUS




If you want to see the function

Code: Select all  Expand view

*=================================================================================
/// Pesquisa no Banco de dados Dependedo da Chave escolhida
///=============================================================================
FUNCTION PROCURA_FORNECED_SQL(v_Ordenacao,v_Campo_Ordenar,v_Num_Col)
    DEFAULT v_Ordenacao         :="A"
    DEFAULT v_Campo_Ordenar     :="NOMFOR"
    DEFAULT v_Num_Col           :="1"
    IF v_Ordenacao = 'A'
        cOrder := 'D'
    ELSE
        cOrder := 'A'
    ENDIF
    *----------------------------------------------------------------------------
    IF SELECT("forneced") != 0
        forneced->(DbCloseArea())
    ENDIF      
    cQuery := ' SELECT  * from forneced '
    cQuery += ' ORDER BY ' + ALLTRIM(v_Campo_Ordenar)  + IF(v_Ordenacao='A',' DESC',' ASC')
    use sql cQuery alias "forneced" new via 'MYSQL'
    forneced->( DbGoTop())
    oDB_forneced_SQL:oHeaderFonts                               := O_F_DLG
    oDB_forneced_SQL:oCol(  (oDB_forneced_SQL:nColSel) ):oHeaderFont    := O_F_GET
    oDB_forneced_SQL:nColSel                                    := (v_Num_Col)  
    oDB_forneced_SQL        :GoTop()
    oDB_forneced_SQL        :Refresh()
    oDB_forneced_SQL        : SetFocus()
Return(.t.)
 



Example is in Asc order (notice the little arrow)

Image
INFORMAISVRB
 
Posts: 51
Joined: Tue Mar 23, 2010 12:53 pm

Re: Txbrowse Column Sort Indicator

Postby cnavarro » Thu Nov 17, 2022 4:35 pm

Try with
Code: Select all  Expand view

   oBrw:RefreshHeaders()
 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6548
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Txbrowse Column Sort Indicator

Postby INFORMAISVRB » Thu Nov 17, 2022 5:28 pm

Hi, thanks for replying, unfortunately it didn't work

oDBx_Fornecedor :RefreshHeaders()

look

Code: Select all  Expand view

FUNCTION PROCURA_FORNECED_SQL(v_Ordenacao,v_Campo_Ordenar,v_Num_Col)
 
    DEFAULT v_Ordenacao         :="A"
    DEFAULT v_Campo_Ordenar     :="NOMFOR"
    DEFAULT v_Num_Col           := 2
    IF v_Ordenacao = 'A'
        cOrder := 'D'
    ELSE
        cOrder := 'A'
    ENDIF      
    *----------------------------------------------------------------------------
    IF SELECT("forneced") != 0
        forneced->(DbCloseArea())
    ENDIF      
    cQuery := ' SELECT  * from forneced '
    cQuery += ' ORDER BY ' + ALLTRIM(v_Campo_Ordenar)  + IF(v_Ordenacao='A',' DESC',' ASC')
    use sql cQuery alias "forneced" new via 'MYSQL'
    forneced->( DbGoTop())
    oDBx_Fornecedor:oHeaderFonts                            := O_F_DLG
    oDBx_Fornecedor:nColSel                             := (v_Num_Col)  
    oDBx_Fornecedor:oCol(  (v_Num_Col) ):oHeaderFont:= O_F_GET
    oDBx_Fornecedor     :GoTop()

    oDBx_Fornecedor     :RefreshHeaders()

    oDBx_Fornecedor     :Refresh()
    oDBx_Fornecedor         : SetFocus()            
Return(.t.)
 
INFORMAISVRB
 
Posts: 51
Joined: Tue Mar 23, 2010 12:53 pm

Re: Txbrowse Column Sort Indicator

Postby karinha » Thu Nov 17, 2022 6:02 pm

Márcio, Veja se ajuda:

http://forums.fivetechsupport.com/viewtopic.php?f=3&t=40363

Regrads, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7826
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Txbrowse Column Sort Indicator

Postby INFORMAISVRB » Thu Nov 17, 2022 7:42 pm

not working
INFORMAISVRB
 
Posts: 51
Joined: Tue Mar 23, 2010 12:53 pm

Re: Txbrowse Column Sort Indicator

Postby nageswaragunupudi » Fri Nov 18, 2022 3:09 am

Set the sorted column's data cOrder := "A" or "D" depending on Ascending or Descending sort and then calll RefreshHeaders

Code: Select all  Expand view
oBrw:cOrders := ""
oCol:cOrder := "A"
oBrw:RefreshHeaders()
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10643
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Txbrowse Column Sort Indicator

Postby INFORMAISVRB » Fri Nov 18, 2022 9:53 am

Thanks for the answer
It worked almost 100%, but it is updating all the columns.
I need only the Selected Column to be updated.
See the following images

Asc

Image

Desc

Image
INFORMAISVRB
 
Posts: 51
Joined: Tue Mar 23, 2010 12:53 pm

Re: Txbrowse Column Sort Indicator

Postby nageswaragunupudi » Fri Nov 18, 2022 4:28 pm

You should set
oCol:cOrder := "A"
for the SORTED COLUMN ONLY.

You have set this for all columns.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10643
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Txbrowse Column Sort Indicator

Postby INFORMAISVRB » Sat Nov 19, 2022 11:12 am

Thank you very much
But I couldn't understand where to implement
I attach the complete function, in case it is easier to help me

Sorry for not understanding


Code: Select all  Expand view

*-------------------------------------------------------------------------------
* Localiza Cadastro de fornecedores
*-------------------------------------------------------------------------------
FUNCTION LOCALIZA_fornecedORES_SQL()
    Cursor("SQL")
    X                       := .T.
    PROCURA_PESQUISA            := SPACE(40)
    cOrder                      := 'A'  
    T_ID_VEICULO                :=  0
    T_CAMPO_ORDENAR         :='NOMFOR'  
    uRetCol                     := 1       
    *============================================================================
    TB_bairros()
    *----------------------------------------------------------------------------
    TB_forneced()
    *----------------------------------------------------------------------------  
    IF SELECT("forneced") != 0
        forneced->(DbCloseArea())
    ENDIF      
    cQuery:=                ' SELECT  * from forneced'
    cQuery:= cQuery + ' ORDER BY CODFOR '
    use sql cQuery alias "forneced" new via 'MYSQL'
    forneced->(DbGoTop())
    *----------------------------------------------------------------------------   
    DEFINE DIALOG oDlg_Pesq_Fornecedor RESOURCE "PESQUISA_SQL_INCREMENTAL" TITLE "...:: Pesquisa ::..." Font O_F_DLG
    oDlg_Pesq_Fornecedor:lHelpIcon:=.F.
    T_TXT_DIALOGO   := ' Pesquisa'
    REDEFINE SAY oT_TXT_DIALOGO                     var T_TXT_DIALOGO     ID 4052           OF oDlg_Pesq_Fornecedor  FONT O_F_GET COLOR CLR_LWHITE,CLR_BFOOT  Update
    T_TXT_DIALOGO2  := ' '
    REDEFINE SAY oT_TXT_DIALOGO2                        var T_TXT_DIALOGO2  ID 4001             OF oDlg_Pesq_Fornecedor  FONT O_F_GET COLOR CLR_LWHITE,CLR_BFOOT  Update
    *----------------------------------------------------------------------------     
    oDBx_Fornecedor                                 := TXBrowse():New( oDlg_Pesq_Fornecedor )
    oDBx_Fornecedor:lAutoSort                   :=.t.
    oDBx_Fornecedor:cAlias                      := "forneced"
    oDBx_Fornecedor:bKeyDown                    :={|nKey|  if(nkey=13,(     T_CODIGO_forneced   := forneced->CODFOR, oDlg_Pesq_Fornecedor:End() ),) }
    oDBx_Fornecedor:bChange                     :={||                           T_CODIGO_forneced   := forneced->CODFOR     }
    oDBx_Fornecedor:bLDblClick                  :={||                           T_CODIGO_forneced   := forneced->CODFOR, oDlg_Pesq_Fornecedor:End() }
    oDBx_Fornecedor:lColDividerComplete     := .F.
    oDBx_Fornecedor:lFooter                 := .T.
    oDBx_Fornecedor:lRecordSelector         := .T.  
    oDBx_Fornecedor:nHeaderLines            := 2
    oDBx_Fornecedor:nDataLines              := 2
    oDBx_Fornecedor:bClrStd                     := {|| { M->COR_LETRAS_GRID, IIF(((oDBx_Fornecedor:cAlias)->(ORDKEYNO()))%2==0, COR_1_bClrStd , COR_2_bClrStd  )}}
    oDBx_Fornecedor:bClrSelFocus                := {|| { M->COR_1_bClrSelFocus, M->COR_2_bClrSelFocus  } }        
    oDBx_Fornecedor:bClrRowFocus                := {|| { M->COR_1_bClrRowFocus, M->COR_2_bClrRowFocus   } }
    oDBx_Fornecedor:nColDividerStyle        := 4
    oDBx_Fornecedor:nRowDividerStyle        := 4
    oDBx_Fornecedor:nMarqueeStyle           := 4
    oDBx_Fornecedor:nFooterLines            := 1
    oDBx_Fornecedor:lAllowColSwapping       := .T.                                 //  Click no header (.f.)Trava
    oDBx_Fornecedor:lAllowRowSizing         := .T.                                 //  Nao move as Linhas (nao sei) 
    oDBx_Fornecedor:l2007                       := M->ESTILO_l2007
    oDBx_Fornecedor:lColChangeNotify        := .T.  &&&&& gerar evento por coluna
    oDBx_Fornecedor:lAllowRowSizing         := .T.
    oDBx_Fornecedor:lSeekWild               := .T.
    oDBx_Fornecedor:lIncrFilter                 := .T. // Liga o Filtro incremental    
    *----------------------------------------------------------------------------   
    oDBx_Fornecedor:nColSel                     := 2   // Jogar o Foco na Segunda coluna
    *----------------------------------------------------------------------------   
    oCol                        := oDBx_Fornecedor:AddCol()
    oCol:bStrData       := { || STRZERO(forneced->CODFOR,06,0) }
    oCol:cHeader        := "Código"
    oCol:cFooter        := " "
    oCol:nDataStrAlign  := AL_LEFT
    oCol:nHeadStrAlign  := AL_LEFT
   oCol:bLClickHeader   := {|r,c,f,o| ( oDBx_Fornecedor:cFilterFld := 'CODFOR', PROCURA_FORNECED_SQL(cOrder,'CODFOR',oDBx_Fornecedor:MouseColPos( c ) )    )}
   oCol:cSortOrder      := 'CODFOR'
    oCol:oHeaderFont        := O_F_90_GRAUS
    *----------------------------------------------------------------------------   
    oCol                        := oDBx_Fornecedor:AddCol()
    oCol:bStrData       := { || forneced->NOMFOR }
    oCol:cHeader        := "Razão"
    oCol:cFooter        := " "
    oCol:nDataStrAlign  := AL_LEFT
    oCol:nHeadStrAlign  := AL_LEFT
   oCol:bLClickHeader   := {|r,c,f,o| ( oDBx_Fornecedor:cFilterFld := 'NOMFOR', PROCURA_FORNECED_SQL(cOrder,'NOMFOR', oDBx_Fornecedor:MouseColPos( c )  )  )}
   oCol:cSortOrder      := 'NOMFOR'
   oCol:oHeaderFont     := O_F_GET
    *----------------------------------------------------------------------------   
    oCol                        := oDBx_Fornecedor:AddCol()
    oCol:bStrData       := { || forneced->FANTASIA }
    oCol:cHeader        := "Fantasia"
    oCol:cFooter        := " "
    oCol:nDataStrAlign  := AL_LEFT
    oCol:nHeadStrAlign  := AL_LEFT
   oCol:bLClickHeader   := {|r,c,f,o| (  oDBx_Fornecedor:cFilterFld :=  'FANTASIA', PROCURA_FORNECED_SQL(cOrder,'FANTASIA',oDBx_Fornecedor:MouseColPos( c ) )    )}
   oCol:cSortOrder      := 'FANTASIA'
    *----------------------------------------------------------------------------   
    oCol                        := oDBx_Fornecedor:AddCol()
    oCol:bStrData       := { || forneced->ENDFOR }
    oCol:cHeader        := "Endereço"
    oCol:cFooter        := " "
    oCol:nDataStrAlign  := AL_LEFT
    oCol:nHeadStrAlign  := AL_LEFT
   oCol:bLClickHeader   := {|r,c,f,o| ( oDBx_Fornecedor:cFilterFld :=  'ENDFOR', PROCURA_FORNECED_SQL(cOrder,'ENDFOR',oDBx_Fornecedor:MouseColPos( c ) )    )}
   oCol:cSortOrder      := 'ENDFOR'
    *----------------------------------------------------------------------------   
    oCol                        := oDBx_Fornecedor:AddCol()
    oCol:bStrData       := { || forneced->BAIFOR }
    oCol:cHeader        := "Bairro"
    oCol:cFooter        := " "
    oCol:nDataStrAlign  := AL_LEFT
    oCol:nHeadStrAlign  := AL_LEFT
   oCol:bLClickHeader   := {|r,c,f,o| (  oDBx_Fornecedor:cFilterFld :=  'BAIFOR', PROCURA_FORNECED_SQL(cOrder,'BAIFOR',oDBx_Fornecedor:MouseColPos( c ) )   )}
   oCol:cSortOrder      := 'BAIFOR'
    *----------------------------------------------------------------------------   
    oCol                        := oDBx_Fornecedor:AddCol()
    oCol:bStrData       := { || forneced->CEPFOR }
    oCol:cHeader        := "Cep"
    oCol:cFooter        := " "
    oCol:nDataStrAlign  := AL_LEFT
    oCol:nHeadStrAlign  := AL_LEFT
   oCol:bLClickHeader   := {|r,c,f,o| (  oDBx_Fornecedor:cFilterFld :=  'CEPFOR', PROCURA_FORNECED_SQL(cOrder,'CEPFOR',oDBx_Fornecedor:MouseColPos( c ) )   )}
   oCol:cSortOrder      := 'CEPFOR'
    *----------------------------------------------------------------------------
    oCol                        := oDBx_Fornecedor:AddCol()
    oCol:bStrData       := { ||  forneced->CGCFOR }
    oCol:cHeader        := "Cnpj/Cpf"
    oCol:cFooter        := " "
    oCol:nDataStrAlign  := AL_LEFT
    oCol:nHeadStrAlign  := AL_LEFT
   oCol:bLClickHeader   := {|r,c,f,o| (  oDBx_Fornecedor:cFilterFld :=  'CGCFOR', PROCURA_FORNECED_SQL(cOrder,'CGCFOR',oDBx_Fornecedor:MouseColPos( c ) )   )}
   oCol:cSortOrder      := 'CGCFOR'
    *----------------------------------------------------------------------------
    oCol                        := oDBx_Fornecedor:AddCol()
    oCol:bStrData       := { || (forneced->INSFOR)   }
    oCol:cHeader        := "Insc."
    oCol:cFooter        := " "
    oCol:nDataStrAlign  := AL_LEFT
    oCol:nHeadStrAlign  := AL_LEFT
   oCol:bLClickHeader   := {|r,c,f,o| (  oDBx_Fornecedor:cFilterFld :=  'INSFOR', PROCURA_FORNECED_SQL(cOrder,'INSFOR',oDBx_Fornecedor:MouseColPos( c ) )  )}
   oCol:cSortOrder      := 'INSFOR'
    *----------------------------------------------------------------------------
    oCol                        := oDBx_Fornecedor:AddCol()
    oCol:bStrData       := { || (forneced->FONFOR)   }
    oCol:cHeader        := "Tel."
    oCol:cFooter        := " "
    oCol:nDataStrAlign  := AL_LEFT
    oCol:nHeadStrAlign  := AL_LEFT
   oCol:bLClickHeader   := {|r,c,f,o| (  oDBx_Fornecedor:cFilterFld :=  'FONFOR', PROCURA_FORNECED_SQL(cOrder,'FONFOR',oDBx_Fornecedor:MouseColPos( c ) )    )}
   oCol:cSortOrder      := 'FONFOR'
    *----------------------------------------------------------------------------
    oCol                        := oDBx_Fornecedor:AddCol()
    oCol:bStrData       := { || (forneced->FAXFOR)   }
    oCol:cHeader        := "Fax"
    oCol:cFooter        := " "
    oCol:nDataStrAlign  := AL_LEFT
    oCol:nHeadStrAlign  := AL_LEFT
   oCol:bLClickHeader   := {|r,c,f,o| (  oDBx_Fornecedor:cFilterFld :=  'FAXFOR', PROCURA_FORNECED_SQL(cOrder,'FAXFOR',oDBx_Fornecedor:MouseColPos( c ) )    )}
   oCol:cSortOrder      := 'FAXFOR'
   *----------------------------------------------------------------------------
    oDBx_Fornecedor:CreateFromResource(4015)
    *----------------------------------------------------------------------------
    WITH OBJECT oDBx_Fornecedor
       :SetGroupHeader( "Dados Básicos"    ,    01, 02, O_F_CAB_XBROWSE)
       :SetGroupHeader( "Dados Postais"     ,    03, 05, O_F_CAB_XBROWSE)
      :cFilterFld       := "NOMFOR"
      :bKeyDown         := { |nKey| If( nKey == VK_RETURN, (  uRet := oDBx_Fornecedor:oCol( uRetCol ):Value, oDlg_Pesq_Fornecedor:End() ), nil ) }
      :bKeyChar         := { |nKey| If( nKey == VK_ESCAPE, ( oDBx_Fornecedor:Seek( "" ), oDlg_Pesq_Fornecedor:End() ), nil ) }
      :bLDClickDatas    := { || uRet := oDBx_Fornecedor:oCol( uRetCol ):Value, oDlg_Pesq_Fornecedor :End() }  
      :AutoFit()
   END
   REDEFINE SAY oDBx_Fornecedor:oSeek var oDBx_Fornecedor:cSeek                     ID 4002  PICTURE "@!" OF oDlg_Pesq_Fornecedor COLOR CLR_PRETO, CLR_VD_CALRO  FONT O_F_GET   
    *----------------------------------------------------------------------------
    REDEFINE BUTTONBMP oSair_pesquisa                                               ID 4008         OF oDlg_Pesq_Fornecedor ACTION ( oDlg_Pesq_Fornecedor:end()  ) BITMAP "#8019" PROMPT "&Fechar" TEXTRIGHT
    REDEFINE BUTTONBMP oExp_excel                                                       ID 4016         OF oDlg_Pesq_Fornecedor ACTION ( oDBx_Fornecedor:ToExcel(), PROCURA_FORNECED_SQL()  )   BITMAP (M->BTN_EXPORTA_EXCEL) PROMPT "Ex&cel" TEXTRIGHT
    *----------------------------------------------------------------------------
    oExp_excel              :   cToolTip := "Exportar para"+CRLF+"o Microsoft® Excel"
   *----------------------------------------------------------------------------
    oDBx_Fornecedor : SetFocus()
    ACTIVATE DIALOG oDlg_Pesq_Fornecedor CENTERED
 
RETURN .T.



*=================================================================================
/// Pesquisa no Banco de dados Dependedo da Chave escolhida
///=============================================================================
FUNCTION PROCURA_FORNECED_SQL(v_Ordenacao,v_Campo_Ordenar,v_Num_Col)
    DEFAULT v_Ordenacao         :="A"
    DEFAULT v_Campo_Ordenar     :="NOMFOR"
    DEFAULT v_Num_Col           := 2
    IF v_Ordenacao = 'A'
        cOrder := 'D'
    ELSE
        cOrder := 'A'
    ENDIF      
    *----------------------------------------------------------------------------
    IF SELECT("forneced") != 0
        forneced->(DbCloseArea())
    ENDIF      
    cQuery := ' SELECT  * from forneced '
    cQuery += ' ORDER BY ' + ALLTRIM(v_Campo_Ordenar)  + IF(v_Ordenacao='A',' DESC',' ASC')
    use sql cQuery alias "forneced" new via 'MYSQL'
    forneced->( DbGoTop())
    oDBx_Fornecedor:oHeaderFonts                                := O_F_DLG
    oDBx_Fornecedor:nColSel                                 := (v_Num_Col)  
    oDBx_Fornecedor:oCol(  (v_Num_Col) ):oHeaderFont    := O_F_GET
    oDBx_Fornecedor                                             :GoTop()
    oDBx_Fornecedor                                             :Refresh()
    oCol:cOrder  := (cOrder)
    oDBx_Fornecedor:RefreshHeaders()    
    oDBx_Fornecedor         : SetFocus()            
Return(.t.)
 
INFORMAISVRB
 
Posts: 51
Joined: Tue Mar 23, 2010 12:53 pm

Re: Txbrowse Column Sort Indicator

Postby INFORMAISVRB » Mon Nov 21, 2022 11:46 pm

Sorry, but I don't understand how to make it work.
INFORMAISVRB
 
Posts: 51
Joined: Tue Mar 23, 2010 12:53 pm


Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: Exabot [Bot] and 79 guests