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