Page 1 of 1

Know the Column number clicked on the TXBrowse Header

Posted: Wed Nov 16, 2022 9:23 pm
by INFORMAISVRB
Hello

Is there any way to know which column (header was clicked by the User)

Image

Example of clicking the header "fantasy" would be number 3


thank you all friend

Re: Know the Column number clicked on the TXBrowse Header

Posted: Thu Nov 17, 2022 8:54 am
by Antonio Linares
Here you have an example:

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oBrowser

   USE "clients"

   XBROWSER "clients" SETUP ( oBrowser := oBrw,;
      AEval( oBrw:aCols, { | o | o:bLClickHeader := { | nMRow, nMCol | MsgInfo( oBrowser:MouseColPos( nMCol ) ) } } ) )

return nil
Basically all you have to do is set the codeblock bLClickHeader for each column of the browser

Re: Know the Column number clicked on the TXBrowse Header

Posted: Thu Nov 17, 2022 9:07 am
by Antonio Linares
This version works also when the browse is scrolled:

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oBrowser, oColumn

   USE "clients"

   XBROWSER "clients" SETUP ( oBrowser := oBrw,;
      AEval( oBrw:aCols, { | o | o:bLClickHeader := { | nMRow, nMCol, nFlags, oCol | ;
      oColumn := oCol, MsgInfo( AScan( oBrowser:aCols, { | o | o == oColumn } ) ) } } ) )

return nil

Re: Know the Column number clicked on the TXBrowse Header

Posted: Thu Nov 17, 2022 9:20 am
by Antonio Linares
From Mr. Rao:
To know the column number when created.
oBrw:bLClickHeaders := { |r,c,f,oCol| MsgInfo( oCol:nCreationOrder ) }
To know the present position in the visible columns ( position in oBrw:aCols )
oBrw:bLClickHeaders := { |r,c,f,oCol| MsgInfo( oCol:nPos ) }

Re: Know the Column number clicked on the TXBrowse Header

Posted: Thu Nov 17, 2022 9:23 am
by Antonio Linares
So using Mr. Rao advise we can simplify the code even more:

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   USE "clients"

   XBROWSER "clients" SETUP oBrw:bLClickHeaders := { |r,c,f,oCol| MsgInfo( oCol:nCreationOrder ) }

return nil
or

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   USE "clients"

   XBROWSER "clients" SETUP oBrw:bLClickHeaders := { |r,c,f,oCol| MsgInfo( oCol:nPos ) }

return nil

Re: Know the Column number clicked on the TXBrowse Header

Posted: Thu Nov 17, 2022 11:49 am
by INFORMAISVRB
Thank you all
Solved like this, see the Code

My code

Code: Select all | Expand

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'
 

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oBrowser

   USE "clients"

   XBROWSER "clients" SETUP ( oBrowser := oBrw,;
      AEval( oBrw:aCols, { | o | o:bLClickHeader := { | nMRow, nMCol | MsgInfo( oBrowser:MouseColPos( nMCol ) ) } } ) )

return nil