AGB  ·  Datenschutz  ·  Impressum  







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

Sortierte TListbox - Probleme mit ItemIndex

Ein Thema von livemedia · begonnen am 12. Mai 2008 · letzter Beitrag vom 13. Mai 2008
Antwort Antwort
livemedia

Registriert seit: 14. Mär 2006
8 Beiträge
 
Delphi 2009 Professional
 
#1

Sortierte TListbox - Probleme mit ItemIndex

  Alt 12. Mai 2008, 22:40
Hallo

Ich befülle eine Listbox mit den Daten aus einem Array und möchte anschließend auf Doppelklicks in der Listbox reagieren. Solange ich die Daten nicht vcn der Listbox sortieren lasse ist alles wunderbar weil der gelieferte Wert Itemindex dem Speicherplatz in meinem Array entspricht.

EXTREM verkürztes Beispiel:

Delphi-Quellcode:
type friends = record
        firstname: string[30];
        lastname : string[30];
        email : string[50];
end;
var friendlist : array[1..100] of friends;

for i := 1 to 10 do
begin
 form1.ListBox1.Items.Add(friendlist[i].firstname+' '+friendlist[i].lastname)
end;
Und sobald ein Doppelklick kommt in der Listbox soll die Mailadresse rauskommen. (wieder nur als kurzes Beispiel)

Delphi-Quellcode:
procedure TForm1.ListboxdBlClick(Sender: TObject);
begin
  if listbox1.ItemIndex <> -1 then
    showmessage(friendlist[listbox1.ItemIndex+1].email); // +1 weil itemindex bei 0 anfängt - meine Liste aber mit 1
end;
Wenn ich jetzt aber die Listbox sortieren lasse kommt beim Klick auf den ersten Eintrag der Itemindex 0 obwohl der Speicherplatz in meinem Array z.b. 8 sein könnte. Somit wird mir bei dem obigen Beispiel dann eine falsche Mailadresse angezeigt. Wie bekomme ich diese Daten denn wieder überein OHNE vorab zu sortieren ??

Ich hoffe ich konnte mein Problem deutlich machen obwohl ich nur beispielhafte Code verwendet habe.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Sortierte TListbox - Probleme mit ItemIndex

  Alt 12. Mai 2008, 22:45
Du kannst die Records auch in den Items ablegen
Markus Kinzler
  Mit Zitat antworten Zitat
livemedia

Registriert seit: 14. Mär 2006
8 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Sortierte TListbox - Probleme mit ItemIndex

  Alt 12. Mai 2008, 23:23
Danke schonmal für die Antwort....

... mit der ich leider nicht so richtig was anfangen kann.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Sortierte TListbox - Probleme mit ItemIndex

  Alt 12. Mai 2008, 23:25
form1.ListBox1.Items.AddItem(friendlist[i].firstname+' '+friendlist[i].lastname, friendlist[i]);
Markus Kinzler
  Mit Zitat antworten Zitat
livemedia

Registriert seit: 14. Mär 2006
8 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Sortierte TListbox - Probleme mit ItemIndex

  Alt 12. Mai 2008, 23:40
ListBox1.Items.AddItem(..... .... gibt es bei mir gar nicht.

Aber abgesehen davon :

Mein eigentlicher Code beinhaltet deutlich mehr Informationen als nur die 3 Sachen hier. Wenn ich das ALLES mit in die Listbox nehme : verschwende ich dann nicht unnötig Speicher ? Mit geht es ja mehr darum wie ich den Rückbezug vom Itemindex zu meinem Speicherplatz im Array herstellen kann.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Sortierte TListbox - Probleme mit ItemIndex

  Alt 12. Mai 2008, 23:43
Zitat von livemedia:
ListBox1.Items.AddItem(..... .... gibt es bei mir gar nicht.
Da hat sich Markus wohl vertippt, so muss es heißen:

ListBox1.AddItem(...); Du kannst den Items auch nur den Array-Index zuordnen, dann braucht dein Programm nicht so viel Speicher. Natürlich könntest du auch das Array selbst sortieren und dann der ListBox zuweisen.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Sortierte TListbox - Probleme mit ItemIndex

  Alt 13. Mai 2008, 00:38
Meine Empfehlung: mach aus dem record eine Klasse.
Die Objekte diese Klasse speicherst du nicht in einem Array, sondern in einer TObjectList.
TObjectList ist eine deutlich bessere Datenstruktur als ein offenes Array.

Du kannst nun Einträge über listbox.Items.AddObject() deiner Listbox hinzufügen.
Du brauchst dir so auch keine Sorgen zu machen, auf diese Art irgendein Speicher zu verschwenden.
Es werden ja nur Zeiger auf die Objekte verwendet.
Wenn die Listbox sortiert wird, werden die Zeiger in listbox.Items.Objects[] gleich mitsortiert.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Sortierte TListbox - Probleme mit ItemIndex

  Alt 13. Mai 2008, 06:39
Zitat:
Da hat sich Markus wohl vertippt, so muss es heißen
Ja habe beim anpassen des Codes falsche Ebene erwischt.
Markus Kinzler
  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 16:14 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