Naja, nach dem ersten Aufruf legt FindComponent (von TComponent) eine interne Liste der Controls an:
Delphi-Quellcode:
{ Fill the sorted list (and sort it) }
FSortedComponents := TList.Create;
FSortedComponents.Count := FComponents.Count;
for I := 0 to FComponents.Count - 1 do
FSortedComponents[I] := FComponents[I];
FSortedComponents.SortList(
function(Item1, Item2: Pointer): Integer
begin
Result := CompareText(TComponent(Item1).Name, TComponent(Item2).Name);
end);
Hab jetzt nur nicht näher geschaut, ob diese Liste beim Hinzufügen und Löschen von Komponenten auch geupdated wird -- aber ich gehe mal stark davon aus. Von daher sollte das von der Performance her auch noch okay sein.
BTW: Darf ich SourceCode aus der
VCL hier einfach posten?! -> Copyright!
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)