> Инспектор объектов откуда-то знает список всех возможных значений компонентных свойств. А как у него этот список попросить?
procedure TComponentProperty.GetValues(Proc: TGetStrProc);
begin
Designer.GetComponentNames(GetTypeData(GetPropType), Proc);
end;
>а вообще хочу узнать, как это делается.
Это тайна.
Лично я, например, делаю так
procedure TBrCustomDesigner.GetComponentObjNames;
var Pref: string;
i: integer;
C: TComponent;
begin
Pref := '';
if Assigned(ARoot)
then Pref := ARoot.Name + DotSep
else ARoot := Root;
with ARoot do
for i := 0 to ComponentCount - 1 do begin
C := Components[i];
if C <> Form then
if C.ClassType.InheritsFrom(TypeData^.ClassType) then Proc(Pref + C.Name);
end;
end;
procedure TBrCustomDesigner.GetComponentNames;
var i: integer;
C: TComponent;
List: TList;
begin
if Root = nil then Exit;
GetComponentObjNames(nil, TypeData, Proc);
List := TList.Create;
GlobalDesignManager.GetGlobalComponents(Root, List);
for i := 0 to List.Count - 1 do begin
C := TComponent(List[i]);
if C <> Root then GetComponentObjNames(C, TypeData, Proc);
end;
end;