AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

warum geht der code nicht(listview sort)

Ein Thema von keineahnung1 · begonnen am 23. Jan 2005 · letzter Beitrag vom 23. Jan 2005
Antwort Antwort
keineahnung1

Registriert seit: 22. Jan 2005
44 Beiträge
 
#1

warum geht der code nicht(listview sort)

  Alt 23. Jan 2005, 14:35
hi, ich hab ne listview und hab 2 spalten, aber egal auf welchen header ic klick sortiert der immer nach der column 0. Ich verwende genau den code der in der hilfe steht


Delphi-Quellcode:
procedure TForm1.ListView1ColumnClick(Sender: TObject;
  Column: TListColumn);
begin

    ColumnToSort := Column.Index;
  (Sender as TCustomListView).AlphaSort;


end;

procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
var
  ix: Integer;
begin
  if ColumnToSort = 0 then
    Compare := CompareText(Item1.Caption,Item2.Caption)
  else begin
   ix := ColumnToSort - 1;
   Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
  end;

end;
woran leigt des?!?! jemand ne idee
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: warum geht der code nicht(listview sort)

  Alt 23. Jan 2005, 14:38
Hi, bin mir nicht ganz sicher...aber nimm mal AlphaSort CustomSort
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
keineahnung1

Registriert seit: 22. Jan 2005
44 Beiträge
 
#3

Re: warum geht der code nicht(listview sort)

  Alt 23. Jan 2005, 14:47
ah und was sollt ich da als die 2 parameter angeben?

vielen dank
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: warum geht der code nicht(listview sort)

  Alt 23. Jan 2005, 14:49
hab leider kein Delphi zum nachschauen hier, aber schau doch mal in der Online-Hilfe nach, da steht es bestimmt!
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
keineahnung1

Registriert seit: 22. Jan 2005
44 Beiträge
 
#5

Re: warum geht der code nicht(listview sort)

  Alt 23. Jan 2005, 14:52
ah willst du vielelicht interpretieren was des heißt, ich bin nicht in der lage da rauszukriegen was für params ich angeben muss

Beschreibung

Mit der Methode CustomSort können Sie die Elemente der Liste mit der im Parameter SortProc festgelegten Funktion sortieren. Diese Sortierfunktion vergleicht die Listenelemente, die als lParam1 und lParam2 übergeben werden. Die Sortierfunktion gibt einen Integerwert zurück, der angibt, ob lParam1 und lParam2 gleichrangig sind (Rückgabewert 0), ob lParam1 größer als lParam2 ist (Rückgabewert größer als 0) oder ob lParam1 kleiner als lParam2 ist (Rückgabewert kleiner als 0). Der Parameter lParam von CustomSort ist ein optionaler Wert, der als dritter Parameter an die Sortierfunktion übergeben wird.

Hat der Parameter SortProc den Wert nil (Delphi) bzw. NULL (C++), generiert CustomSort das Ereignis OnCompare, um die Listenelemente zu vergleichen. Dadurch können Sie mit einer entsprechenden Ereignisbehandlungsroutine eine andere Sortierreihenfolge basierend auf dem Wert des Parameters lParam festlegen (z.B. aufsteigende oder absteigende Reihenfolge).

Wird keine Sortierfunktion oder keine Ereignisbehandlungsroutine für OnCompare bereitgestellt, sortiert CustomSort die Elemente alphabetisch nach den Werten der Eigenschaft Caption.

Konnte die Liste erfolgreich sortiert werden, gibt CustomSort true zurück.

Warnung: Wenn die Anwendung im virtuellen Modus ausgeführt wird, arbeitet CustomSort nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: warum geht der code nicht(listview sort)

  Alt 23. Jan 2005, 15:00
Der Funktionskopf wäre zwar nützlich, aber ich denke es reicht, wenn du nil als Parameter benutzt.
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
keineahnung1

Registriert seit: 22. Jan 2005
44 Beiträge
 
#7

Re: warum geht der code nicht(listview sort)

  Alt 23. Jan 2005, 15:19
Mit der Methode CustomSort können Sie die Listenelemente unter Verwendung der angegebenen Sortierfunktion sortieren.

Delphi-Syntax:

type TLVCompare = function(lParam1, lParam2, lParamSort: Integer): Integer stdcall;
function CustomSort(SortProc: TLVCompare; lParam: Longint): Boolean;

C++ Syntax:

typedef int (CALLBACK *PFNLVCOMPARE)(LPARAM lParam1, LPARAM lParam2, LPARAM lParam);
bool __fastcall CustomSort(PFNLVCOMPARE SortProc, int lParam);

da noch der kopf

aber customsort macht irgdnwie auch keinen unterschied zu alphasort, hab immernoch des selbe problem
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: warum geht der code nicht(listview sort)

  Alt 23. Jan 2005, 15:29
CustomSort(nil, 0) müsste funktionieren, aber auch nur dann, wenn der aufrufenden Listview ein OnCompare Ereignis zugewiesen wurde. Mach in dein ListView1Compare mal ein ShowMessage(IntToStr(ColumnToSort)) rein und schau, ob es aufgerufen wird.

Wenn du ohne die globale Variable ColumnToSort auskommen willst, kannst du den zweiten Parameter benutzen.

Delphi-Quellcode:
procedure TForm1.ListView1ColumnClick(Sender: TObject;
  Column: TListColumn);
begin
  (Sender as TListView).CustomSort(nil, Column.Index);
end;

procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
var
  ix: Integer;
begin
  if Data = 0 then
    Compare := CompareText(Item1.Caption,Item2.Caption)
  else begin
   ix := Data - 1;
   Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
  end;

end;
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
keineahnung1

Registriert seit: 22. Jan 2005
44 Beiträge
 
#9

Re: warum geht der code nicht(listview sort)

  Alt 23. Jan 2005, 16:05
geniall, an des hab ich nicht gedacht des ereignis zuzuweißen musst des noch im objekt manager machen, deswegen...........

vielen vielen dank
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz