PureLVSort > Rückmeldung nach erfolgtem Sortieren?

Für allgemeine Fragen zur Programmierung mit PureBasic.
mkd
Beiträge: 10
Registriert: 08.01.2008 16:04
Wohnort: Norddeutschland

PureLVSort > Rückmeldung nach erfolgtem Sortieren?

Beitrag 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
WinVista Ultimate/HomePremium , PB 4.20
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Was steht den in der Hilfe zu PureLVSort?
Windows 10 Pro, 64-Bit / Outtakes | Derek
mkd
Beiträge: 10
Registriert: 08.01.2008 16:04
Wohnort: Norddeutschland

Beitrag 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
WinVista Ultimate/HomePremium , PB 4.20
Benutzeravatar
gnozal
Beiträge: 219
Registriert: 04.12.2004 13:01
Wohnort: Frankreich (67)
Kontaktdaten:

Re: PureLVSort > Rückmeldung nach erfolgtem Sortieren?

Beitrag 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)
For free libraries and tools, visit my web site (also home of jaPBe V3 and PureFORM).
mkd
Beiträge: 10
Registriert: 08.01.2008 16:04
Wohnort: Norddeutschland

Beitrag von mkd »

Many thanks. :D

Michael
WinVista Ultimate/HomePremium , PB 4.20
mkd
Beiträge: 10
Registriert: 08.01.2008 16:04
Wohnort: Norddeutschland

Beitrag von mkd »

Ich habe damit ein Verständnisproblem:
Wie frage ich diese sendmessage denn ab???

Michael
WinVista Ultimate/HomePremium , PB 4.20
Benutzeravatar
gnozal
Beiträge: 219
Registriert: 04.12.2004 13:01
Wohnort: Frankreich (67)
Kontaktdaten:

Beitrag 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
For free libraries and tools, visit my web site (also home of jaPBe V3 and PureFORM).
mkd
Beiträge: 10
Registriert: 08.01.2008 16:04
Wohnort: Norddeutschland

Beitrag von mkd »

Hi gnozal!

Works great! :allright:

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

Michael
WinVista Ultimate/HomePremium , PB 4.20
Antworten