Autor Beitrag
Killi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 299

Win*
D6 Prof
BeitragVerfasst: Mo 05.08.02 13:17 
Hi!

ich habe einmal eine ListBox, in der ich eine Uhrzeit eintrage und dazu noch eine Beschreibung - in einer TStringList lasse ich gleichzeitig die IDs der einzelnen Sachen eintragen - nun will ich die Anzeige geordnet haben - und zwar nach der Uhrzeit!
In der ListBox ist das ja kein Problem - hier mache ich einfach ListBox.Sorted:= True, aber jetzt habe ich ein Problem...wie soll ich die StringList ordnen lassen, sodass die Einträge in der Reihenfolge noch zueinander passen? hier der ganze Code:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
           // Prüfen, ob für gewählten Tag noch etwas aussteht
           if (Query.FieldByName('Uhrzeit').AsString >= TimeToStr(Time)) and (Query.FieldByName('Datum').AsDateTime = Datum) and (Query.FieldByName('Erledigt').AsBoolean = False) then
           begin
                // falls noch aussteht, normal anzeigen
                LBToDo.Items.Add(Query.FieldByName('Uhrzeit').AsString + ' - ' + Query.FieldByName('Beschr').AsString);

                LBToDo.Sorted:= True;

                Auswahl.Add(Query.FieldByName('WID').AsString);
           end
           else if (Query.FieldByName('Uhrzeit').AsString <= TimeToStr(Time)) and (Query.FieldByName('Datum').AsDateTime = Datum) and (Query.FieldByName('Erledigt').AsBoolean = False) then
           begin
                // falls noch aussteht und verpasst wurde, mit Meldung anzeigen
                LBToDo.Items.Add('***** VERPASST - ' + Query.FieldByName('Uhrzeit').AsString + ' - ' + Query.FieldByName('Beschr').AsString + ' *****');

                LBToDo.Sorted:= True;

                Auswahl.Add(Query.FieldByName('WID').AsString);
           end;
           Query.Next;
...


Sonst kommt alles durcheinander!
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mo 05.08.02 14:30 
Hallo,

so wie ich das sehe ist nicht die Sortierung das Problem, sondern die Zurdnung der Elemente der beiden Listen. Dies kannst du über die Objects eigenschaft machen. Dies sin Zeiger, die "an den Einträgen hängen". Da Zeiger 32Bit werte sind kannst du die Auch als Longint Interpretieren. Der Zugriff sähe so aus (sl = StringList):
ausblenden Quelltext
1:
2:
  sl.Objects[i] := Ptr(LongIntVar);
  LongIntVar := Longint(sl.Objects[i]);


Wenn du den zusammengehörigen Einträgen auf diese Art die selben Zahlen zuordnest, dann hast du eine Reienfolgenunabhänige Verbindung. Ob du dann immernoch Sortierst (die zweit Liste) kannst du selbst entscheiden.

Gruß
Klabautermann