![]() |
FMX TListView mit Seattle
Hallo zusammen. Ich versuche seit ein paar Tagen aus der
![]()
Abgesehen davon, daß manche der Beispiele in Laufzeitfehlern enden, bauen sie zu 99% auf LiveBindings auf, so daß die ListView schon zur Designzeit fix und fertig ist - nicht wirklich didaktisch wertvoll. Hat einer von Euch Erfahrung mit der FMX.TListView von Seattle? Sherlock |
AW: FMX TListView mit Seattle
Ich habe mich auch lange mit der TListView herumgeärgert. Über GetIt habe ich mir nun die ksComponents installiert, darunter ist eine Komponente namens TksTableView, die ist einer TListView ähnlich, allerdings IMO einfacher zu handhaben.
|
AW: FMX TListView mit Seattle
Danke für den Tipp, ich schau die mir mal an.
Sherlock |
AW: FMX TListView mit Seattle
Zitat:
Delphi-Quellcode:
kannst Du die Checkboxen für den Editmode ausschalten, hast dann aber keine extra Auswahlmöglichkeit mehr.
Listview1.ItemAppearance.ItemEditAppearance := 'Custom';
Wenn nur ein Item auswählbar sein soll, kannst Du auch im OnItemClick-Event reagieren:
Delphi-Quellcode:
procedure TForm33.ListView1ItemClick(const Sender: TObject;
const AItem: TListViewItem); var L: Integer; begin for L := 0 to Listview1.Items.Count-1 do begin Listview1.Items[L].Checked := Listview1.Items[L] = AItem; end; end; |
AW: FMX TListView mit Seattle
Zitat:
Zitat:
Vielen Dank! Sherlock |
AW: FMX TListView mit Seattle
Zitat:
|
AW: FMX TListView mit Seattle
Oh. Mein. Gott. Wald...Bäume...ich danke Dir!
Äh, Edith sagt "Nein". Ich muß wohl erklären was ich machen will:
Delphi-Quellcode:
Das geht nicht, weil ListItems nicht wirklich die Liste ist, sondern mit einem Index aufgerufen werden muß und nur ein Item zurück gibt.var BoxITem: TListBoxItem; . . . for BoxItem in SomeListBox.ListItems do Sherlock |
AW: FMX TListView mit Seattle
Ach so, Du meinst die For in Enumeration.
Hier geht das standardmäßig nur mit den einfachen Strings:
Delphi-Quellcode:
Warum das mit den ListItems nicht geht, hat Chris Rolliston vor einiger Zeit schon mal hier beschrieben und per ClassHelper auch eine Art Ersatzlösung dafür geboten:
var
s: string; begin for s in ListBox1.Items do begin ShowMessage (s); end; end; ![]() In Anlehnung daran könnte man es (hier ein wenig vereinfacht und mit einer etwas anderen Namensgebung, die ich passender finde) für das for in mit den ListboxItems dann so machen:
Delphi-Quellcode:
type TFmxObjHelper = class helper for TFMXObject strict private procedure AddTypeOfObjects <T: class>(Parent: TFmxObject; var Arr: TArray<T>; var Count: Integer); public function ItemsOf<T: class>: TArray<T>; end; procedure TFmxObjHelper.AddTypeOfObjects<T>(Parent: TFmxObject; var Arr: TArray<T>; var Count: Integer); var Child: TFmxObject; I, z: Integer; begin for I := 0 to Parent.childrenCount - 1 do begin Child := Parent.Children[I]; if Child is T then begin if Length(Arr) = Count then SetLength(Arr, Count + 64); Arr[Count] := T(Child); Inc(Count); end; AddTypeOfObjects<T>(Child, Arr, Count); end; end; function TFmxObjHelper.ItemsOf<T>: TArray<T>; var Count: Integer; begin Count := 0; AddTypeOfObjects<T>(Self, Result, Count); SetLength(Result, Count); end; procedure TForm18.FormCreate(Sender: TObject); var lbi: TListboxItem; begin for lbi in ListBox1.ItemsOf<TListboxItem> do begin ShowMessage (lbi.text); end; end; |
AW: FMX TListView mit Seattle
Ich benutze for loop mit Hilfsvariable
Delphi-Quellcode:
oder
for I := 0 to Count-1 do
Delphi-Quellcode:
ich weiss das es etwas mehr code und etwas weniger Tipparbeit braucht,
for I := Low(Items) to High(Items) do
aber gibt es ausserdem noch einen wirkichen Grund
Delphi-Quellcode:
zu benutzen ?
for Item in ItemList do
Das obere macht eigentlich nie Probleme, und die Performance ist auch OK. Vielleicht bei 5 Mio. Items sollte man drüber nachdenken, aber im täglichen Leben reicht doch eine Version. Rollo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 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