AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Combobox sortieren funktioniert nicht

Combobox sortieren funktioniert nicht

Ein Thema von Pow3rus3r · begonnen am 10. Jul 2012 · letzter Beitrag vom 11. Jul 2012
Antwort Antwort
Seite 1 von 2  1 2   
Pow3rus3r

Registriert seit: 17. Apr 2012
43 Beiträge
 
Delphi XE Professional
 
#1

Combobox sortieren funktioniert nicht

  Alt 10. Jul 2012, 11:59
Hallo zusammen,

ich habe eine Combobox, die ich sortieren muss, jedoch tut sich nach setzen von ".sorted := true" nichts...

Testweise in einem neuen Projekt habe ich es genauso getestet und es funktionierte (jedoch wurden die Itemindezes aller Einträge dann durcheinander geworfen (ich spreche die Einträge über den Itemindex an).

Gibt es irgendeine Möglichkeit, die Combobox zu stortieren (nach Alphabet), ohne dass sich die Indezes ändern (dass z.B. der erste Eintrag in der Liste den Index 5 und der 2. Eintrag in der Liste Index 1 hat usw.)?

hier mal ein Quellcodeauszug der Stellen, an denen die Combobox befüllt wird:

Delphi-Quellcode:
    form1.cmbsignalnames.Items.Insert(0, '- Signal auswählen -');
    form1.cmbsignalnames.ItemIndex := 0;
    form1.cmbsignalnames.items.insert(siganz, form1.Signallist[siganz].Name);
    form1.cmbsignalnames.Sorted := true;
siganz ist dabei eine Zählervariable, die hochgezählt wird (von 1 bis EOF). signallist ist ein Array eines selbst angelegten Records.


Danke für alle Tipps!

Gruß,
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Combobox sortieren funktioniert nicht

  Alt 10. Jul 2012, 12:11
Nein, aber Du kannst per AddObject('Text',TObject(i)) die nötigen Informationen ablegen.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Combobox sortieren funktioniert nicht

  Alt 10. Jul 2012, 12:11
Der ItemIndex gibt an, an welcher Stelle in der Liste der String zu finden ist. Man kann also nicht sortieren, ohne dass sich der ItemIndex ändert. Du könntest Dir aber etwas Eigenes ausdenken und das in der Objects-Eigenschaft ablegen (ggf. per Typecast).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Combobox sortieren funktioniert nicht

  Alt 10. Jul 2012, 12:20
ich spreche die Einträge über den Itemindex an
Meiner Meinung nach ist das nicht ganz im Sinne des Erfinders, da über den Eintrag in Items etwas anderes ausgewählt werden soll.
Ich plädiere in solchen Fällen für eine parallele Datenstruktur (Liste) in der sich die Nuzdaten befinden. Die Combobox sollte nur für die angezeigten Auswahlmöglichkeiten genutzt werden.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Pow3rus3r

Registriert seit: 17. Apr 2012
43 Beiträge
 
Delphi XE Professional
 
#5

AW: Combobox sortieren funktioniert nicht

  Alt 10. Jul 2012, 12:39
Danke für die Antworten!

Die Sache mit Addobject klingt interessant - nur was muss ich für TObject dort übergeben (sodass ich meinen Signalindex, mit dem ich die Signale in der Combobox identifiziere) eindeutig festlegen kann und dann die Combobox alphabetisch sortieren kann?

Hintergrund ist folgender:

Ich habe eine Textdatei, in der Signalnamen stehen und deren Details (Bitlänge, Adressen usw.). Die textdatei ist aber unsortiert, d.h. die Signalnamen sind nicht alphabetisch sortiert. Ich lese die Signale aber nacheinander ein und speichere die Details in einem Array eines Records.
Die Position der Signalnamen in der Textdatei nutze ich als eindeutige ID, um die Signale anzusprechen (da ich sie glaube ich nicht über den Namen direkt ansprechen kann, in dem Record (oder ist das möglich, dann hätte sich mein Problem schon erledigt)?

Wenn ich nun meine Combobox sortiere, geht derBezug zwischen ID und Namen in der Combobox verloren, wodurch die Signale quer durcheinander sind.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Combobox sortieren funktioniert nicht

  Alt 10. Jul 2012, 12:46
Delphi-Quellcode:
  // einfügen
  ComboBox1.Items.AddObject(aRecordArray[i].Text,TObject[i]);
  // auslesen
  RecordIndex := Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.016 Beiträge
 
Delphi 12 Athens
 
#7

AW: Combobox sortieren funktioniert nicht

  Alt 10. Jul 2012, 12:53
Das Sorted setzt nur MSDN-Library durchsuchenCBS_SORT, und wie das arbeitet, sollte man mal im MSDN nachlesen.

Insert mit festen Positionen und Sortieren ist irgendwie kontraproduktiv.
PS: Eine TStringList knallt dir sogar eine Exception entgegen, wenn man dort sowas versucht.


War das Sorted vorher schon auf True?
Setze es mal auf False und danach wieder auf True, oder rufe cmbsignalnames.Perform(CM_RECREATEWND, 0, 0); auf, wenn es immer auf True steht.



Nur mal so als nebensächliche Frage:
Wieso nutzt du die Variable form1?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Pow3rus3r

Registriert seit: 17. Apr 2012
43 Beiträge
 
Delphi XE Professional
 
#8

AW: Combobox sortieren funktioniert nicht

  Alt 10. Jul 2012, 13:10
Nur mal so als nebensächliche Frage:
Wieso nutzt du die Variable form1?
Ich fülle die Liste in einer procedure "procedure readdefines(var busname:string; busnumber: word);"

Wenn ich dort form1 nicht angebe, bekomme ich einen Fehler, dass er das Steuerelement nicht findet. Ich dachte eigentlich, dass die Steuergeräte global ansprechbar sind. Oder muss man hier irgendwo noch was veröffentlichen?
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#9

AW: Combobox sortieren funktioniert nicht

  Alt 10. Jul 2012, 13:12
Du könntest cmbsignalnames und Signallist als Parameter übergeben (notfalls auch Form1), oder aus der Prozedur in der es geschieht, sofern in From1 als Methode von Form1 implementieren
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Combobox sortieren funktioniert nicht

  Alt 10. Jul 2012, 13:13
Mach aus der Prozedur eine Methode, schon kannst Du auch auf die eigenen Controls zugreifen.
procedure TForm1.readdefines(var busname:string; busnumber: word); [edit] *Pfh* schon wieder zu spät, macht Euren Mist doch alleine [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:01 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