Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Sortierte Listbox, welcher String an welcher Stelle (https://www.delphipraxis.net/131263-sortierte-listbox-welcher-string-welcher-stelle.html)

DataNess 21. Mär 2009 19:29


Sortierte Listbox, welcher String an welcher Stelle
 
Hallo Leute,

ich weiss nicht so recht wie ich's beschreiben soll, aber ich habe folgendes Problem:
Ich habe ein Array mit allen möglichen Informationen zu Filmen, und eine StringList die mit den Filmtiteln aus dem Array gefüllt wird.
Nun habe ich eine Listbox mit der StringList gefüllt und jenachdem ob eine CheckBox aktiviert wird, werden die Einträge mit ListBox.Sorted sortiert!
Delphi-Quellcode:
procedure TMain.SortCBClick(Sender: TObject);
begin
  ListBox.Sorted:=SortCB.Checked;
  ListBox.Items:=sl;
  ListBox.Refresh;
end;
Wie finde ich nun am schnellsten raus, welcher ArrayIndex mit dem ausgewählten Listbox-Eintrag zusammenhängt ?
Delphi-Quellcode:
procedure TMain.ListBoxMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var z:integer;
begin
  z:=(y div 13)+1;
  if (y=0) or (y>AnzFilme*13) or (x=0) or (x>419) then z:=100;
  if z<=anzfilme then
    StatusBar.Panels[1].Text:=Filme[z].Hint
  else
    StatusBar.Panels[1].Text:=' ';
end;
Im unsortierten Zustand klappt's so, aber wenn's sortiert ist müsste ich erst das ganze Array nach dem String 'ListBox.Items.Strings[z]' durchsuchen.

Danke im Vorraus

jaenicke 21. Mär 2009 19:33

Re: Sortierte Listbox, welcher String an welcher Stelle
 
Speichere den Index in Objects der ListBox, dann hast du die Zuordnung direkt.
Delphi-Quellcode:
// Eintragen
ListBox1.Items.AddObject('Dein Eintragsstring', TObject(DeinEintragsIndex));

...

// Index zu einem Eintrag auslesen
Integer(ListBox1.Items.Objects[ListBox1.ItemIndex])
Du kannst da aber auch direkt eine Referenz zu dem Objekt selbst hineinlegen, wenn du willst.

DataNess 21. Mär 2009 20:43

Re: Sortierte Listbox, welcher String an welcher Stelle
 
Danke jaenicke,

so geht's .. jetzt muss ich nur noch die ListBox-Einträge neu erstellen, wenn ListBox.Sorted wieder False wird, oder giebt's da auch ne Abkürzung ?

jaenicke 21. Mär 2009 21:11

Re: Sortierte Listbox, welcher String an welcher Stelle
 
Zitat:

Zitat von DataNess
jetzt muss ich nur noch die ListBox-Einträge neu erstellen, wenn ListBox.Sorted wieder False wird, oder giebt's da auch ne Abkürzung ?

Der unsortierte Zustand ist ja kein definierter Zustand. Die Einträge sind dann ja in der Reihenfolge, in der sie irgendwo stehen.

Wenn diese Reihenfolge also notwendig ist, dann musst du das selbst wieder neu eintragen. Die Eintragereihenfolge wird nicht gespeichert.

Allerdings kannst du dafür ja die selbe Methode wie für das initiale Eintragen benutzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz