FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour xBrowse ascending order
Posts: 6983
Joined: Fri Oct 07, 2005 07:07 PM
xBrowse ascending order
Posted: Wed Aug 07, 2013 06:44 PM

xBrowse
I can’t remember how to fix XBrowse on ascending order when clicking on Header.
Thanks in advance
Otto

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: xBrowse ascending order
Posted: Thu Aug 08, 2013 02:10 AM

When we click on header of an unsorted column, it will be sorted in Ascending Order. If we click again on the header of a sorted column, the order keeps toggling between ascending and descending.

Regards



G. N. Rao.

Hyderabad, India
Posts: 474
Joined: Sun Oct 30, 2005 06:37 AM
Re: xBrowse ascending order
Posted: Thu Aug 08, 2013 03:59 AM

oCol := obrow1:AddCol()
oCol:bStrData := {||odb1:startdate}
oCol:cHeader := "创建日期"

    oCol:cOrder := "A"
    oCol:nHeadBmpNo := 1    
    oCol:bLClickHeader := {|r,c,f,o| ::bas1205( r,c,o) }

...

method bas1205(nrow,ncol,oCol) class bas12class

local aCols,cOrder,nFor,nLen
local nat,id1
aCols := oCol:oBrw:aCols
cOrder := oCol:cOrder
nAt := oCol:nCreationOrder
nLen := LEN(aCols)

for nFor := 1 to nLen
    aCols[ nFor ]:nHeadBmpNo := 0
    aCols[ nFor ]:cOrder := ""
next

do case
        case nAt==1
                id1:=::odb1:custid
            ::odb1:cQuery:="select * from custm1  order by custid"+if(corder=="A"," desc","")
            ::odb1:refresh()
            ::obrow:refresh()
            ::obrow:bseek:={|v|::odb1:SEEK(v,,{||::odb1:custid})}
            ::obrow:SEEK(id1)
        case nAt==3
                id1:=::odb1:custm
            ::odb1:cQuery:="select * from custm1  order by custm"+if(corder=="A"," desc","")
            ::odb1:refresh()
            ::obrow:refresh()
            ::obrow:bseek:={|v|::odb1:SEEK(v,,{||::odb1:custm})}
            ::obrow:SEEK(id1)
        case nAt==5
                id1:=::odb1:sales
            ::odb1:cQuery:="select * from custm1  order by sales"+if(corder=="A"," desc","")
            ::odb1:refresh()
            ::obrow:refresh()
            ::obrow:bseek:={|v|::odb1:SEEK(v,,{||::odb1:sales})}
            ::obrow:SEEK(id1)
        case nAt==6
                id1:=::odb1:addrc
            ::odb1:cQuery:="select * from custm1  order by addrc"+if(corder=="A"," desc","")
            ::odb1:refresh(.t.)
            ::obrow:refresh()
            ::obrow:bseek:={|v|::odb1:SEEK(v,,{||::odb1:addrc})}
            ::obrow:SEEK(id1)
    endcase
 if nat==1.or.nat==3.or.nat==5.or.nat==6
if cOrder == "" .or. cOrder == "D"      
    oCol:cOrder := "A"
    oCol:nHeadBmpNo := 1
else
    oCol:cOrder := "D"
    oCol:nHeadBmpNo := 2
endif
 end

return

http://www.xtech2.top
Mobile:(86)13802729058
Email:100200651@qq.com
QQ:100200651
Weixin: qq100200651
Posts: 6983
Joined: Fri Oct 07, 2005 07:07 PM
Re: xBrowse ascending order
Posted: Thu Aug 08, 2013 05:51 AM

Thank you for your help.

Mr. Rao is it possible to switch off toggling.
Thanks in advance
Otto

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: xBrowse ascending order
Posted: Thu Aug 08, 2013 06:22 AM

Mr Otto

We have not provided for disabling toggling.
Do you want to disable toggling globally for the entire project or for selected browses only?

Regards



G. N. Rao.

Hyderabad, India
Posts: 2706
Joined: Fri Oct 07, 2005 01:50 PM
Re: xBrowse ascending order
Posted: Thu Aug 08, 2013 12:36 PM

Otto

I believe you can just omit AUTOSORT when you create your browse ... if I recall that disables the header click to sort.

Rick Lipkin

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: xBrowse ascending order
Posted: Thu Aug 08, 2013 01:50 PM

Mr Rick

He wants autosort.
What he does not want is descending sort.
I shall help when he explains to me whether he wants to suppress Descending sort globally or for selected browses. i shall think of introducing a switch for that purpose.

Regards



G. N. Rao.

Hyderabad, India
Posts: 6983
Joined: Fri Oct 07, 2005 07:07 PM
Re: xBrowse ascending order
Posted: Fri Aug 09, 2013 07:40 AM

Dear Mr. Rao,
to suppress toggling for a single browser would be fine for me.
Thanks in advance
Otto

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: xBrowse ascending order
Posted: Sun Aug 11, 2013 05:09 AM
Mr Otto

Please introduce new DATA by adding this line in the class declaration section of xbrowse.prg

Code (fw): Select all Collapse
DATA lSortDescend AS LOGICAL INIT .t.

Desirable position is next to DATA lAutoSort.

In the METHOD SetOrder CLASS TXBrwColumn, insert these three lines of code just after local declaration:
Code (fw): Select all Collapse
   if ::cOrder == 'A' .and. ! ::oBrw:lSortDescend
      return .f.
   endif

For whichever browse, you do not want descend sort, please set
oBrw:lSortDescend := .f.
Regards



G. N. Rao.

Hyderabad, India

Continue the discussion