Seite 1 von 1

PureLVSort > Rückmeldung nach erfolgtem Sortieren?

Verfasst: 08.01.2008 16:20
von mkd
Hallo erst mal und frohes neues Jahr!

Ich habe bereits gesucht, aber nichts gefunden:
Wie erhalte ich EINE Rückmeldung (falls das möglich ist), wenn PureLVSort einen Sortiervorgang abgeschlossen hat?

Mit der Callback-Funktion habe ich es probiert, allerdings bekomme ich dann scheinbar bei jeder umsortierten Zeile eine Rückmeldung, was das Programm natürlich "zunagelt".

Schönen Dank schon mal,
Michael

Verfasst: 08.01.2008 16:25
von Fluid Byte
Was steht den in der Hilfe zu PureLVSort?

Verfasst: 08.01.2008 16:41
von mkd
Hi!

Wenn ich das richtig verstanden habe, muss ich
1. eine Spalte als UserCallback definieren per PureLVSORT_SetColumnType
2. PureLVSORT_DefineUserCallback(@MySortingCallback()) nutzen
3. Procedure MySortingCallback(ListIconNumber.l, ListIconColumn.l, Item1.s, Item2.s) nutzen, um das Sortieren abzufragen.

Hier bekomme ich zwar eine Rückmeldung, aber jedes mal, wenn eine Zeile umsortiert wurde, nicht wenn der gesamte Vorgang abgeschlossen ist, so wie ich es gern hätte. Ich benötige aus der Rückmeldung eigentlich auch nur die ListIconNumber, um festzustellen, welches sortiert wurde.

Ich habe bestimmt grad einen Denkfehler! Hilfe!
Michael

Re: PureLVSort > Rückmeldung nach erfolgtem Sortieren?

Verfasst: 09.01.2008 13:04
von gnozal
mkd hat geschrieben:Ich habe bereits gesucht, aber nichts gefunden:
Wie erhalte ich EINE Rückmeldung (falls das möglich ist), wenn PureLVSort einen Sortiervorgang abgeschlossen hat?
Undocumented feature (used by ESGrid) : PureLVSORT sends the message #PureLVSORT_eGrid_SortIsDone to the listicon when the sorting is done.

Code: Alles auswählen

#PureLVSORT_eGrid_SortIsDone = #WM_USER + 1
SendMessage_(ListHandle, #PureLVSORT_eGrid_SortIsDone, ClickedColumn, 0)

Verfasst: 10.01.2008 10:14
von mkd
Many thanks. :D

Michael

Verfasst: 10.01.2008 14:22
von mkd
Ich habe damit ein Verständnisproblem:
Wie frage ich diese sendmessage denn ab???

Michael

Verfasst: 10.01.2008 15:36
von gnozal
mkd hat geschrieben:Ich habe damit ein Verständnisproblem:
Wie frage ich diese sendmessage denn ab???
Michael
You have to subclass the listicon :

Code: Alles auswählen

; 
#PureLVSORT_eGrid_SortIsDone = #WM_USER + 1
Global OldCallback.l
;
#Window_0 = 0
#ListIcon_0 = 0
;
Procedure MyCallback(WindowID, message, wParam, lParam)
  Result = CallWindowProc_(OldCallback, WindowID, message, wParam, lParam)
  If message = #PureLVSORT_eGrid_SortIsDone
    Debug "ListIcon " + Str(GetDlgCtrlID_(WindowID)) + " was sorted (column " + Str(wParam) + ")"
  EndIf
  ProcedureReturn Result
EndProcedure
;
Procedure Open_Window_0()
  If OpenWindow(#Window_0, 216, 0, 602, 302, "PureLVSORT V2 Test", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(0))
      ListIconGadget(#ListIcon_0, 5, 5, 590, 285, "String", 110)
      AddGadgetColumn(#ListIcon_0, 1, "Numeric", 110)
      AddGadgetColumn(#ListIcon_0, 2, "Float", 110)
      AddGadgetColumn(#ListIcon_0, 3, "DateDDMMYYYY", 120)
      AddGadgetColumn(#ListIcon_0, 4, "DateMMDDYYYY", 120)
      AddGadgetColumn(#ListIcon_0, 5, "FileSize", 120)
      AddGadgetColumn(#ListIcon_0, 6, "NoSorting", 120)
      AddGadgetItem(#ListIcon_0, -1, "ABCDE" + Chr(10) + "514" + Chr(10) + "0.9" + Chr(10) + "31/12/2004" + Chr(10) + "12/31/2004" + Chr(10) + "15.02 MB" + Chr(10) + "0")
      AddGadgetItem(#ListIcon_0, -1, "ACDEF" + Chr(10) + "118" + Chr(10) + "1.9" + Chr(10) + "11/12/2004" + Chr(10) + "12/11/2004"  + Chr(10) + "65 B" + Chr(10) + "1")
      AddGadgetItem(#ListIcon_0, -1, "ZABCD" + Chr(10) + "-414" + Chr(10) + "7.0" + Chr(10) + "21/01/2003" + Chr(10) + "01/21/2003" + Chr(10) + "5.98 GB" + Chr(10) + "3")
      AddGadgetItem(#ListIcon_0, -1, "DEFGH" + Chr(10) + "524" + Chr(10) + "900" + Chr(10) + "10/06/2001" + Chr(10) + "06/10/2001" + Chr(10) + "100 KB" + Chr(10) + "A")
      ;
      OldCallback = SetWindowLong_(GadgetID(#ListIcon_0), #GWL_WNDPROC, @MyCallback())
      ;
    EndIf
  EndIf
EndProcedure
Open_Window_0()
If PureLVSORT_SelectGadgetToSort(#ListIcon_0, #PureLVSORT_ShowClickedHeader_IconLeft) = #PureLVSORT_Ok
  PureLVSORT_SetColumnType(#ListIcon_0, 0, #PureLVSORT_String) ; default, not necessary
  PureLVSORT_SetColumnType(#ListIcon_0, 1, #PureLVSORT_Numeric)
  PureLVSORT_SetColumnType(#ListIcon_0, 2, #PureLVSORT_Float)
  PureLVSORT_SetColumnType(#ListIcon_0, 3, #PureLVSORT_DateDDMMYYYY)
  PureLVSORT_SetColumnType(#ListIcon_0, 4, #PureLVSORT_DateMMDDYYYY)
  PureLVSORT_SetColumnType(#ListIcon_0, 5, #PureLVSORT_FileSize)
  PureLVSORT_SetColumnType(#ListIcon_0, 6, #PureLVSORT_NoSorting)
EndIf
;
Repeat
  Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
End

Verfasst: 10.01.2008 23:40
von mkd
Hi gnozal!

Works great! :allright:

With this feature, your Lib is perfect.
Thanks for help.

Michael