Code: Select all
;Test PureLVSORT
;PB 4.61
Enumeration
  #FontApp
  #Mainform
  #Table
  #TotQte
  
  #Status
EndEnumeration
Global TotQte.i, LastBuffer.s
Global Mois.s="Janvier|Février|Mars|Avril|Mai|juin"
Declare.L Edit_Callback(Event.l, ListIconNumber.l, Column.l, Row.l, Text.s)
Declare GetTotalQty()
Declare Open_MainForm()
Procedure.l Edit_Callback(Event.l, ListIconNumber.l, Column.l, Row.l, Text.s)
  Static LastColumn = -1, LastRow = -1, LastBuffer.s
  If Column <> -1
    LastColumn = Column
    LastBuffer=Text
  EndIf
  If Row <> -1
    LastRow = Row
  EndIf
    
  SetGadgetText(#Status, Str(Column)+"/"+Str(LastRow)) 
  
  Select Event
    Case #PureLVSORT_EditStart
      Select LastColumn
        Case 0 ;Colonne 1 on peut choisir un mois (defilement des fleches)
          ProcedureReturn @"Janvier|Février|Mars|Avril|Mai|Juin"
          
        Case 1 ;Quantité de 1 à 10
          ProcedureReturn @"1|2|3|4|5|6|7|8|9|10"
          
        Case 2 ;Texte libre
          ProcedureReturn 0
          
      EndSelect
      
    Case #PureLVSORT_EditText
      ;On transforme le texte en masjuscule en cours d'écriture
      Select LastColumn
        Case 0
          
        Case 1
          
        Case 2
          LastBuffer=UCase(LastBuffer)
          ProcedureReturn @LastBuffer
          
      EndSelect      
      
    Case #PureLVSORT_EditEnd
      ;Si une quantité est modifiée on recalcul le cumul de ces quantités
      Select LastColumn
        Case 0
          
        Case 1
          GetTotalQty()
          
        Case 2
          
      EndSelect
      
    Case #PureLVSORT_EditEscape
      ProcedureReturn @Text ; On retourne le texte initiale
      
  EndSelect
EndProcedure
;Recalcul les quantités
Procedure GetTotalQty()
  TotQte=0
  For i=0 To CountGadgetItems(#Table)-1
    TotQte+Val(GetGadgetItemText(#Table,i,1))
  Next
  SetGadgetText(#TotQte, Str(TotQte))  
EndProcedure
;Fenetre principale 
Procedure Open_MainForm()
  LoadFont(#FontApp,"Arial",11)
  SetGadgetFont(#PB_Default,FontID(#FontApp)) 
  OpenWindow(#Mainform, 0, 0, 500, 400, "Test PureLVSORT")
  ListIconGadget(#Table, 10,10,480,200,"Mois",100, #PB_ListIcon_FullRowSelect)
  AddGadgetColumn(#Table,1,"Qté.",50)
  AddGadgetColumn(#Table,2,"Observation.",200)
  TextGadget(#PB_Any, 10, 220, 100, 20, "Total Quantité : ")
  TextGadget(#TotQte, 110, 220, 50, 22, "0")
  
  TextGadget(#Status, 20, 350, 150, 22, "")
  
  ;Un peu de remplissage
  For row=0 To 5
    AddGadgetItem(#Table, -1, StringField(Mois,Row+1,"|") + Chr(10)+Str(Row))
  Next
  GetTotalQty()
  ;Utilisation de PureLVSORT 
  If PureLVSORT_SelectGadgetToSort(#Table, #PureLVSORT_ShowClickedHeader_IconLeft) = #PureLVSORT_Ok 
    PureLVSORT_SetColumnType(#Table, 0, #PureLVSORT_String)  
    PureLVSORT_SetColumnType(#Table, 1, #PureLVSORT_Float)  
    PureLVSORT_SetColumnAlignment(#Table, 1, #PureLVSORT_Right)
  
    PureLVSORT_MakeColumnEditable(#Table, 0, #True)
    PureLVSORT_MakeColumnEditable(#Table, 1, #True)
    PureLVSORT_MakeColumnEditable(#Table, 2, #True)
    
    PureLVSORT_SetEditingColors($DEF4F8, $000000)
    PureLVSORT_SetEditingCallback(@Edit_Callback()) 
  EndIf  
EndProcedure
Open_MainForm()
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Gadget
      Select EventGadget()
          
      EndSelect
        
    Case #PB_Event_CloseWindow
      End
  EndSelect
  
ForEver
Maybe a bug? It is possible to modify the header of a column. Click after the last row in this table.
How is it possible not to hear the beep at the end of the edit mode. thank you