delphi vcl design time Ide как показать TPropertyEditor с TDefaultEditor
как показать редактор property в IDE когда кликаешь на попап меню в редакторе
кликаю на элемент TDefaultEditor в редакторе компонента и нужно найти TPropertyEditor по имени property и запустить как бы было если кликнул на редакторе property и запустить его на скринах желаемый результат
1.Кликаю
ишу property с именем Items
запускаю
Хотелось бы узнать как найти проперти редактор и запустить его И это нужно сделать не зная класса проперти а пользуясь только тем что дает редактор компонента.
Зачем почему?? так как я не могу найти тот класс редактора от которого можно унаследоватся
в компоненте TImageCollection
удается только переназначить свойства а не добавить новые
похожий вопрос задавал ранее по поводу редактора TImageCollection
Ответы (1 шт):
Решил так
function AmImageCollectionShowEditor(Component:TAmImageCollection;Designer: IDesigner):IProperty;
function AmImageCollectionGetPropertyImages(Component:TAmImageCollection;Designer: IDesigner):IProperty;
implementation
type
TLocGetPropImages = class
private
PropImage:IProperty;
Component:TAmImageCollection;
Designer: IDesigner;
procedure Proc(const Prop: IProperty);
function Get: IProperty;
end;
{ TLocShowEditor }
function TLocGetPropImages.Get: IProperty;
var ComsList: IDesignerSelections;
begin
ComsList := TDesignerSelections.Create;
ComsList.Add(Component);
GetComponentProperties(ComsList, tkProperties, Designer, Proc);
Result:= PropImage;
end;
procedure TLocGetPropImages.Proc(const Prop: IProperty);
begin
if Prop.GetName = 'Images' then
PropImage:= Prop;
end;
function AmImageCollectionShowEditor(Component:TAmImageCollection;Designer: IDesigner):IProperty;
begin
Result:= AmImageCollectionGetPropertyImages(Component,Designer);
if Assigned(Result) then
Result.Edit; //показ окна редактора (т.е запуск формы к которой не знаю как получить доступ как бы кликая в редакторе проперти)
end;
function AmImageCollectionGetPropertyImages(Component:TAmImageCollection;Designer: IDesigner):IProperty;
var P:TLocGetPropImages;
begin
P:=TLocGetPropImages.Create;
try
P.PropImage:=nil;
P.Component:= Component;
P.Designer:= Designer;
Result:= P.Get;
finally
P.Free;
end;
end;
Запуск так
procedure TAmImageCollection_ComEditor.ExecuteVerb(Index: Integer);
var P: TAmImageCollection;
begin
inherited;
P:= Component as TAmImageCollection;
case Index of
0: AmImageCollectionShowEditor(P,Designer);

