02. juli 2003 - 12:11
Der er
1 kommentar og
1 løsning
Sorterer stigende/faldende
Hej
Jeg ønsker mig en funktioner, alá stifinderen:
Når man klikker på en label så sorteres kolonnen stigende, klikker man igen sorteres den faldende...
Selve sorteringen i min listbox har jeg styr på, men vil høre hvordan I ville håndtere det huske om der har været klikket en gang på en label osv.
Min egen løsning, umiddelbart, er at lave et skjult felt hvor der indsættes et 1 tal første gange der klikkes på en label, klikkes der så igen et 2 tal og igen så et 1 tal...
Hvis der så klikkes på en anden label så nulstilles feltet og der indsættes 1....
Lyder det mystisk - er der en nemmere metode?
Okay jeg kom selv frem til følgende, som slå to fluer med et smæk, da jeg samtidigt med sorteringen får farvet den label som der er sorteret efter.
Jeg har en event når der klikkes på en label:
Private Sub lblKundeNavn_Click()
Call labels("lblKundeNavn", 4)
End Sub
Labels kaldes med labellens navn samt kolonnenumret i listboxen
Private Function labels(Caller, Col As Long)
Dim c
For Each c In ufOrdre.Controls
'---først gøres alle andre labels end den der kalder, grå
If UCase(TypeName(c)) = UCase("Label") And _
c.Name <> Caller Then
c.BackColor = RGB(162, 162, 162)
End If
Next c
For Each c In ufOrdre.Controls
'--- Så findes den label som har kaldt funktionen
If c.Name = Caller Then
'--- og udfra labellens baggrundsfarve bestemmes så om der skal sorteres stigende eller faldende...
With c
If .BackColor = RGB(162, 162, 162) Then
.BackColor = RGB(0, 200, 0)
Call liste(Col, "A")
ElseIf .BackColor = RGB(0, 200, 0) Then
.BackColor = RGB(0, 0, 255)
Call liste(Col, "D")
ElseIf .BackColor = RGB(0, 0, 255) Then
.BackColor = RGB(0, 200, 0)
Call liste(Col, "A")
End If
End With
Exit Function
End If
Next c
End Function
Tips, tricks, hints eller andre kommentar er meget velkomne....