Ach so, Du meinst die For in Enumeration.
Hier geht das standardmäßig nur mit den einfachen Strings:
Delphi-Quellcode:
var
s: string;
begin
for s in ListBox1.Items do begin
ShowMessage (s);
end;
end;
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:
https://delphihaven.wordpress.com/20...-anti-pattern/
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;