![]() |
Datentyp von Litbox.Items
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? |
AW: Datentyp von Litbox.Items
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. |
AW: Datentyp von ListBox.Items
Zitat:
Delphi-Quellcode:
:zwinker:
ShorMessage(ListBox1.Items.ClassName);
In einen TStringList umkopieren, sortieren und Zurück ginge auch. oder
Delphi-Quellcode:
oder
uses System.Generics.Collections;
var Temp: TArray<string>; Temp := ListBox1.Items.ToStringArray; TArray.Sort<string>(Temp); ListBox1.Items.Clear; ListBox1.Items.AddStrings(Temp); ![]() |
AW: Datentyp von Litbox.Items
Zitat:
TListBoxStrings ist leider in meiner Dokumentation nicht berücksichtigt und auch Google liefert keine hilfreichen Ergebnisse. Zitat:
Zitat:
Zitat:
|
AW: Datentyp von Litbox.Items
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:
Bevor du noch was übersiehst. :zwinker: Zitat:
Aber im Grunde muß man halt nur wissen was TStrings macht und das Interne ist im Normalfall allen egal. |
AW: Datentyp von Litbox.Items
Zitat:
|
AW: Datentyp von Litbox.Items
Moin...:P
Soviel negatives zum frühen Morgen...:roll: Aber das Problem sitzt imho 80cm vor dem Bilschirm. 8-) Zitat:
Zitat:
PS: Die QV vom CNPack ist besser und schneller. |
AW: Datentyp von Litbox.Items
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. |
AW: Datentyp von Litbox.Items
Ahhh jetzt ja...:P
Zitat:
|
AW: Datentyp von Litbox.Items
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.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 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