multiselect on Xbrowse

multiselect on Xbrowse

Postby Silvio.Falconi » Thu Jun 04, 2015 9:17 am

I tried to insert the option to make a multi selection of record of a xbrowse

I allready converte a small class of Hernan Ceccarelli form Wbrowse and it run ok but I wish use only xbrowse methods and i not Know How create the multiselction

I wish a checkbox bitmaps ( on /off) at the first column and have this possibilities :

select one record
desect one record
select all records
deselect all records
inverte the selection
Verify the selection

How make it with xbrowse ?
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 6834
Joined: Thu Oct 18, 2012 7:17 pm

Re: multiselect on Xbrowse

Postby nageswaragunupudi » Thu Jun 04, 2015 12:32 pm

If Hernan's wbrowse works well please continue to use it.
Regards

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

Re: multiselect on Xbrowse

Postby Silvio.Falconi » Thu Jun 04, 2015 4:32 pm

Mr Rao,
Sorry perhaps you not understood ..

I not use wbrowse of Hernan but I converted on 2010 a TMultiselect class ( create for wbrowse) into xbrowse class !!!

Image


the code sample


Code: Select all  Expand view
 

 oApp():oGrid := TXBrowse():New( oApp():oDlg )

   oApp():oGrid:nTop    := 00
   oApp():oGrid:nLeft   := nSplit+2
   oApp():oGrid:nBottom := oApp():oDlg:nGridBottom
   oApp():oGrid:nRight  := oApp():oDlg:nGridRight

aBrowse   := { { { || " "}, ' ', 15 },;
                  { { || CL->CLCODICE}, i18n("Codice"), 50 },;
                  { { || CL->CLNOME }, i18n("Ragione Sociale"), 90 },;
                  { { || CL->CLINDIR }, i18n("Indirizzo"), 90 },;
                  { { || CL->CLCAP }, i18n("Cap"), 45 },;
                  { { || CL->CLCITTA }, i18n("Località"), 100 },;
                  { { || CL->CLPROV }, i18n("Provincia"), 20 },;
                  { { || CL->CLREGIONE }, i18n("Regione"), 80 },;
                  { { || CL->CLNAZIONE }, i18n("Nazione"), 80 },;
                  { { || CL->CLPARTIVA }, i18n("Partita Iva"), 60 }      }




   FOR i := 1 TO Len(aBrowse)
      oCol := oApp():oGrid:AddCol()
      oCol:bStrData := aBrowse[ i, 1 ]
      oCol:cHeader  := aBrowse[ i, 2 ]
      oCol:nWidth   := aBrowse[ i, 3 ]
   NEXT
   oApp():oGrid:aCols[01]:addbmpfile( ".\bitmaps\checkoff.bmp" )
   oApp():oGrid:aCols[01]:addbmpfile(  ".\bitmaps\checkon.bmp")
   oApp():oGrid:aCols[01]:bBmpData:={ || iif( ascan( oMultiSel:aRecno, CL->( recno() ) ) >0, 2, 1 ) }

    oApp():oGrid:aCols[01]:bLClickHeader = { | nMRow, nMCol, nFlags, Self |;
      iif( oApp():oGrid:aCols[01]:nHeadBmpNo==2,;
         ( oApp():oGrid:aCols[01]:nHeadBmpNo:=1, oMultiSel:UnSelectAll() ),;
         ( oApp():oGrid:aCols[01]:nHeadBmpNo:=2, oMultiSel:SelectAll() ) ),;
     oApp():oGrid:Refresh() }

   oApp():oGrid:aCols[01]:cHeader       := 'Sel'
   oApp():oGrid:aCols[01]:nHeadBmpNo    := 1
   oApp():oGrid:aCols[01]:nHeadBmpAlign := AL_RIGHT


  for x=1 to len( oApp():oGrid:aCols )
     oApp():oGrid:aCols[x]:bLDClickData:={ || oApp():oGrid:aCols[01]:nHeadBmpNo:=1, oMultiSel:Selected( CL->( recno() ), .t. ),;
                                                                                    oMultiSel:Select( CL->( recno() ) ) }
      oApp():oGrid:aCols[x]:bRClickData:={ |r,c| oMultiSel:menu( CL->( recno() ), r, c,"CL" ),;
      oApp():oGrid:aCols[01]:nHeadBmpNo:=iif( oMultiSel:lSelectAll, 2,1 ), oApp():oGrid:refresh()  }
      oApp():oGrid:aCols[x]:oDataFont := oFontGrid
   next


  oMultiSel:=TXMultiSel():New( oApp():oGrid )


   oApp():oGrid:SetRDD()
  oApp():oGrid:CreateFromCode()

 


the small class

Code: Select all  Expand view

CLASS TXMultiSel
   DATA lSelectAll INIT .F.
   DATA aRecNo
   DATA aRecnoAll
   DATA oLbx
   DATA lSelect    INIT .F.
   DATA nId        INIT  0
   DATA lmenu      INIT .T.
   DATA cAlias
   METHOD  New( oLbx ) CONSTRUCTOR
   METHOD  Selected( nRecNo )
   METHOD  SelectAll()
   METHOD  UnSelectAll()   INLINE ::lSelectAll:= .f., ::aRecNo := {}, ::oLbx:Refresh()
   METHOD  Reverse()
   METHOD  Select( nRecNo )
   METHOD  Menu( nRecNo, nMRow, nMCol )
   METHOD  VerSelected( nRecNo )
   METHOD  ListRecord( aCampos, bFiltro, cCaption )
ENDCLASS



i sent you a test
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 6834
Joined: Thu Oct 18, 2012 7:17 pm


Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: lzanardo and 36 guests