AGB  ·  Datenschutz  ·  Impressum  







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

Datentyp von Litbox.Items

Ein Thema von idefix2 · begonnen am 14. Mai 2017 · letzter Beitrag vom 15. Mai 2017
Antwort Antwort
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Datentyp von Litbox.Items

  Alt 14. Mai 2017, 08:52
TListbox.Items ist vom Typ TStrings. Aber das ist ein abstrakter Typ. Welcher Typ wird da tatsächlich erzeugt?
Ich würde gerne die Liste sortiert haben, aber ein Listbox.Items.sorted gibt es natürlich nicht, weil die Eigenschaft in TStrings noch nicht definiert ist. Kann ich ohne gröbere Umwege (ständiges Hin- und herkopieren zwischen Listbox.Items und einer separaten sortierten Stringlist) zu einer sortierten Listbox kommen, die sortiert bleibt, wenn Elemente hinzugefügt werden?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Datentyp von Litbox.Items

  Alt 14. Mai 2017, 09:41
TListBox.Items stellen nur einen Wrapper um die Implementierung des Windows-Controls dar.
Wenn MS hier keine Funktion zum sortieren vorgesehen hast must du das in Delphi nachbilden.
Oder ein Controll nehmen das komplett in Delphi entwickelt wurde und die Sortierung vorsieht.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Datentyp von ListBox.Items

  Alt 14. Mai 2017, 10:38
Zitat:
Welcher Typ wird da tatsächlich erzeugt?
ShorMessage(ListBox1.Items.ClassName);

In einen TStringList umkopieren, sortieren und Zurück ginge auch.

oder
Delphi-Quellcode:
uses System.Generics.Collections;
var Temp: TArray<string>;

Temp := ListBox1.Items.ToStringArray;
TArray.Sort<string>(Temp);
ListBox1.Items.Clear;
ListBox1.Items.AddStrings(Temp);
oder
Delphi-Referenz durchsuchenTListBox.Sorted
$2B or not $2B

Geändert von himitsu (14. Mai 2017 um 10:41 Uhr) Grund: ListBox.Items mit s
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#4

AW: Datentyp von Litbox.Items

  Alt 14. Mai 2017, 11:33
Zitat:
Welcher Typ wird da tatsächlich erzeugt?
ShorMessage(ListBox1.Items.ClassName);
Danke. Mit der Frage war natürlich weniger der Name des Typs gemeint, sondern eher, was der Typ eigentlich kann, speziell in Bezug auf das Sortieren.
TListBoxStrings ist leider in meiner Dokumentation nicht berücksichtigt und auch Google liefert keine hilfreichen Ergebnisse.

Zitat:
In einen TStringList umkopieren, sortieren und Zurück ginge auch.
Das geht natürlich immer. Meine Frage war ja explizit: ohne gröbere Umwege (ständiges Hin- und herkopieren zwischen Listbox.Items und einer separaten sortierten Stringlist)

Zitat:
oder
Delphi-Referenz durchsuchen: TListBox.Sorted



TListBox.Items stellen nur einen Wrapper um die Implementierung des Windows-Controls dar.
Wenn MS hier keine Funktion zum sortieren vorgesehen hast must du das in Delphi nachbilden.
Oder ein Controll nehmen das komplett in Delphi entwickelt wurde und die Sortierung vorsieht.
Danke. Ich wollte nur sichergehen, dass ich da nichts übersehen habe, wenn ich jetzt das Pferd von hinten aufzäume.

Geändert von idefix2 (14. Mai 2017 um 11:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Datentyp von Litbox.Items

  Alt 14. Mai 2017, 13:07
Genauso wie TMemoStrings kann der Typ selber nichts.
Er stellt nur eine Schnittstelle zwischen TStrings, also dem Standard-StringListenTyp des Delphi, zur Speicherschnittstelle der Komponente her.
Genauso ist TStringList auch nur eine Schnittstelle zu einem String-Array im Arbeitsspeicher.


TMemo: SendMessage WM_SETTEXT EM_GETLINE EM_GETLINECOUNT ...

TListBox: SendMessage LB_SETITEMDATA LB_GETITEMDATA LB_GETTEXT LB_GETCOUNT ...

Im Falle von TListBox hätte man auch TStringList.Sorted im TListBoxStrings implementieren und an den WindowStyle LBS_SORT weiterleiten können, aber das wäre zu umständlich,
bzw. man hatte Sort direkt im Interface des TStrings bereitstellen müssen, da die öffentliche Schnittstelle des ListBox.Items absichtlich nur TStrings und nicht TListBoxStrings ist.

Zitat von idefix2:
Zitat von himitsu:
Hast da mal reingeschaut?
Bevor du noch was übersiehst.

Zitat:
TListBoxStrings ist leider in meiner Dokumentation nicht berücksichtigt und auch Google liefert keine hilfreichen Ergebnisse.
Da ist ein interner und nicht öffentlicher Typ, welcher halt auch nicht offiziell dokumentiert ist.
Aber im Grunde muß man halt nur wissen was TStrings macht und das Interne ist im Normalfall allen egal.
$2B or not $2B

Geändert von himitsu (14. Mai 2017 um 13:19 Uhr)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#6

AW: Datentyp von Litbox.Items

  Alt 14. Mai 2017, 23:17
Zitat:
Hast da mal reingeschaut?
Bevor du noch was übersiehst.
Ok, ich stelle jetzt zu meiner Verblüffung fest, das es TListbox.sorted doch gibt. Offensichtlich hat bei mir die automatische Codevervollständigung gesponnen, weil "Tlistbox.so" war natürlich das erste, was ich im Programm nach dem Create der Listbox eingegeben habe (Die Listbox erstelle ich dynamisch), und nachdem er mir die Eigenschaft sorted da nicht angeboten hat, habe ich angenommen, dass TListbox eine Eigenschaft mit dem Namen nicht hat und nach anderen Möglichkeiten, die Listbox zu sortieren, gesucht. Jetzt funktioniert es aber, keine Ahnung, was da war. Ist offensichtlich keine gute Idee, sich auf diese IDE-Feature zu verlassen.

Geändert von idefix2 (14. Mai 2017 um 23:19 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#7

AW: Datentyp von Litbox.Items

  Alt 15. Mai 2017, 06:13
Moin...
Soviel negatives zum frühen Morgen... Aber das Problem sitzt imho 80cm vor dem Bilschirm.
Zitat:
Offensichtlich hat bei mir die automatische Codevervollständigung gesponnen, weil "Tlistbox.so" war natürlich das erste, was ich im Programm nach dem Create der Listbox eingegeben habe
...die QV sprinnt nicht nicht. Wenn du wirklich TListBox.sort eingegeben hast, statt dem Instanznamen, brauchst du nicht wundern.
Zitat:
Ist offensichtlich keine gute Idee, sich auf diese IDE-Feature zu verlassen.
...erstmal immer an die eigenen Fehler denken und ausschließen.
PS: Die QV vom CNPack ist besser und schneller.

Geändert von haentschman (15. Mai 2017 um 06:29 Uhr)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#8

AW: Datentyp von Litbox.Items

  Alt 15. Mai 2017, 11:12
Habe mich hier verschrieben. Eingegeben habe ich richtig den Namen der Listbox, denn es sind nach der Eingabe vom "." eine Menge Vorschläge gekommen (wenn man den Typnamen statt des Variablennamens eingibt, wird diese Vorschlagsbox gar nicht angezeigt), nach ".s" waren es schon viel weniger, und nach ".so" war die Liste der Vorschläge leer. An dem Punkt habe ich dann begonnen, nach anderen Möglichkeiten zu suchen.

An das CNPack habe ich noch nicht gedacht, danke für den Hinweis.

Geändert von idefix2 (15. Mai 2017 um 11:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#9

AW: Datentyp von Litbox.Items

  Alt 15. Mai 2017, 11:17
Ahhh jetzt ja...
Zitat:
und nach ".so" war die Liste der Vorschläge leer.
...das kann auch vorkommen wenn der Quelltext auch an anderer Stelle (vorher im Text) Fehler hat. Das kann die QV nicht auflösen...
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#10

AW: Datentyp von Litbox.Items

  Alt 15. Mai 2017, 13:31
Irgend einen Grund wird es gehabt haben. Aber nachdem er nach ".s" noch Members gefunden hat, die mit s anfangen, aber sorted nicht dabei war, nehme ich eher nicht an, dass ein Quelltextfehler an einer anderen Stelle schuld war.
  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 10:36 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