Post by floyesoft on Dec 25, 2012 12:17:57 GMT 1
hi
here some code about listview utility
to sort :
to have a backcolor on a line step 2
To have the perfect width fit of colum
here some code about listview utility
to sort :
Proc OCX_SORT(OBJ As ListView, ColumnHeader As ColumnHeader, Optional force_tri= -1) // ma propre proc de tri -1 on change pas reverse , 0 des , 1 asc
// Local OBJ As ListView
// Set OBJ = F_devis_PA
Local t, temp$, temp2$
For t = 1 To OBJ.Count
temp$ = OBJ(t).SubItems(ColumnHeader.Index - 1)
Exit For If temp$ != ""
Next t
If IsDate(temp$) // si c'est une date je met a l'envers
For t = 1 To OBJ.Count
temp2$ = OBJ(t).SubItems(ColumnHeader.Index - 1)
OBJ(t).Tag = temp2$
If IsDate(temp2$)
OBJ(t).SubItems(ColumnHeader.Index - 1) = Format(CDate(temp2$), "yyyy-MM-dd")
EndIf
Next t
ColumnHeader.Tag = Iif(ColumnHeader.Tag = "", "1", "")
If force_tri = -1
OBJ.Sort ColumnHeader.Index - 1, Iif(ColumnHeader.Tag = "", 1, 1 + $10000)
Else If force_tri = 1
OBJ.Sort ColumnHeader.Index - 1, 1
Else
OBJ.Sort ColumnHeader.Index - 1, 1 + $10000
EndIf
For t = 1 To OBJ.Count
OBJ(t).SubItems(ColumnHeader.Index - 1) = OBJ(t).Tag
Next t
Else If Val(temp$) > 0 // If Val(Trim$(Str$(Val(temp$)))) = Val(temp$) And Val(temp$) > 0 // si c'est un chiffre binary compare
For t = 1 To OBJ.Count
temp2$ = OBJ(t).SubItems(ColumnHeader.Index - 1)
OBJ(t).Tag = temp2$
OBJ(t).SubItems(ColumnHeader.Index - 1) = Format(Val(temp2$), "0000000000000000000.00")
Next t
ColumnHeader.Tag = Iif(ColumnHeader.Tag = "", "1", "")
If force_tri = -1
OBJ.Sort ColumnHeader.Index - 1, Iif(ColumnHeader.Tag = "", 1, 1 + $10000)
Else If force_tri = 1
OBJ.Sort ColumnHeader.Index - 1, 1
Else
OBJ.Sort ColumnHeader.Index - 1, 1 + $10000
EndIf
For t = 1 To OBJ.Count
OBJ(t).SubItems(ColumnHeader.Index - 1) = OBJ(t).Tag
Next t
Else
ColumnHeader.Tag = Iif(ColumnHeader.Tag = "", "1", "")
If force_tri = -1
OBJ.Sort ColumnHeader.Index - 1, Iif(ColumnHeader.Tag = "", 1, 1 + $10000)
Else If force_tri = 1
OBJ.Sort ColumnHeader.Index - 1, 1
Else
OBJ.Sort ColumnHeader.Index - 1, 1 + $10000
EndIf
EndIf
Local a$
Local C As ColumnHeader
For Each C In OBJ.ColumnHeaders
a$ = C.Text
reSub a$, "\[", ""
reSub a$, "\]", ""
C.Text = a$
Next
ColumnHeader.Text = "[" + ColumnHeader.Text + "]"
to have a backcolor on a line step 2
Proc OCX_LISTVIEW_COLOR(obj As ListView, rgb1, rgb2)
Local t
For t = 1 To obj.Count
rgb1 = obj.BackColor
obj(t).BackColor = Iif(t Mod 2 = 0, rgb1, rgb2)
Next t
To have the perfect width fit of colum
Proc OCX_Column_Fit(obj As ListView, cl As Int)
Local mx = 0
Local t
For t = 1 To obj.Count
mx = Max(TxtLen(obj(t).SubItems(cl - 1)), mx)
Next t
obj.ColumnHeaders(cl).Width = Max(PixelsToTwipX(mx + 20), PixelsToTwipX(TxtLen(obj.ColumnHeaders(cl).Text) + 13))
EndProc