[Gambas-user] Gridview Select Multiple rows.

user demosthenesk at ...626...
Fri Nov 5 08:09:47 CET 2010


Example with ListView control lswResults

-----------------------------------------------
' Gambas class file
PRIVATE sFileArray AS String[] = [""]
PRIVATE iKeyArray AS Integer[] = [0]
PRIVATE bKeyControlPressed AS Boolean = FALSE
PRIVATE bSellectAllPressed AS Boolean = FALSE



PUBLIC SUB Form_Open()
  sFileArray.Clear 'reset private array
  iKeyArray.Clear  'reset private array
END



PUBLIC SUB btnSelectAll_Click()
  bSellectAllPressed = TRUE
  lswResults.SelectAll
END


PUBLIC SUB lswResults_KeyRelease()
  
IF Key.Control = TRUE THEN
  bKeyControlPressed = FALSE 
ENDIF   
  
  
END

PUBLIC SUB lswResults_KeyPress()
  
IF Key.Control = TRUE THEN
  bKeyControlPressed = TRUE 
ENDIF   
  
END



PUBLIC SUB lswResults_Select()
  
  DIM iKey AS Integer = 0
  DIM sElement AS String = ""
  DIM sFile AS String[] = [""]
  DIM sRow AS String = ""
  DIM iCounter AS Integer

  sFile.Clear
  sRow = Replace$(lswResults.Current.Text, "  ", "\n") 'format string
  sFile = Split(sRow, "\n") 'split row and take only path, reject virus
description
  
  ' PRINT lswResults.Current.Text
  ' PRINT sFile[0]
  

'HERE IS WHAT YOU LOOK FOR -------------------------------
  'if user select with CTRL
IF bKeyControlPressed = TRUE THEN 
  'check if in sFileArray there is a current selection
  IF sFileArray.Count > 0 THEN
  'if there is one user clicked unselect
    IF sFileArray.Exist(sFile[0]) THEN 
  'delete entry of current selected item from sFileArray and from
iKeyArray
    iKey = sFileArray.Find(sFile[0]) 'find key
    sFileArray.Delete(iKey) 'delete selection according found key
    iKey = iKeyArray.Find(lswResults.Current.Key) 'find key for second
array
    iKeyArray.Delete(iKey) 'delete selection according found key
'    lswResults.Current.Selected = FALSE
    ELSE
    'if there is not, add the new selection 
    sFileArray.Add(sFile[0])
    iKeyArray.Add(lswResults.Current.Key)
    ENDIF
  ELSE 'add into Arrays for first time, sFileArray.Count=0
    sFileArray.Add(sFile[0])
    iKeyArray.Add(lswResults.Current.Key)
  ENDIF
ELSE IF bSellectAllPressed = TRUE THEN 'if user pressed btnSelectAll
 sFile.Clear 'clear array
 sFileArray.Clear
 iKeyArray.Clear
 
 lswResults.MoveFirst 'add all items of listview into arrays
 FOR iCounter = 0 TO lswResults.Count - 1
  sRow = Replace$(lswResults[lswResults.Item.Key].Text, "  ", "\n")
'format string
  sFile = Split(sRow, "\n") 'split row and take only path, reject virus
description
  sFileArray.Add(sFile[0])
  iKeyArray.Add(lswResults[lswResults.Item.Key].Key)
  lswResults.MoveNext
 NEXT 
 bSellectAllPressed = FALSE

ELSE 'user makes single clicks
  sFileArray.Clear
  iKeyArray.Clear
  
  sFileArray.Add(sFile[0])
  iKeyArray.Add(lswResults.Current.Key)

ENDIF 
'--------------------------------------------------------


' PRINT "----------------------"  
' FOR EACH sElement IN sFileArray
' PRINT sElement
' NEXT 

END 


On Fri, 2010-11-05 at 15:09 +1100, Michael wrote:
> I'm a newbie to Gambas and very impressed. Managed to solve all my 
> queries and port apps from VB. However I have one problem that has me beat:)
> I have a GridView with Mode = Multiple and can select multiple rows; 
> either sequentially or at random. So far so good as similar to VB.
> I want to loop through the selected items and take some action on each 
> item. eg: Delete the row.
> I cannot find a way to read the selected row. The Gridview.Row property 
> only returns the last selected row.
> Typically my grid may contain 1000 rows and I use this function to 
> delete old records. It would be tedious one at a time. I could get 
> around it by asking the user to enter a cutoff date or range of row 
> numbers to delete but this raises the question "What is the point of 
> having a Multiple mode attribute?"
> Thanks
> Mike
> 
> ------------------------------------------------------------------------------
> The Next 800 Companies to Lead America's Growth: New Video Whitepaper
> David G. Thomson, author of the best-selling book "Blueprint to a 
> Billion" shares his insights and actions to help propel your 
> business during the next growth cycle. Listen Now!
> http://p.sf.net/sfu/SAP-dev2dev
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user






More information about the User mailing list