Инспектор Delphi non-rtti

У меня есть несколько виртуальных элементов управления, которые являются частью созданной мной дизайнерской системы. Они имитируют собственные компоненты delphi, за исключением того, что они полностью нарисованы владельцем. Проблема, с которой я столкнулся, заключается в том, что, поскольку моя система свойств несколько отличается от обычной Delphi, я не могу использовать инспектор RTTI для редактирования свойств.

Кто-нибудь знает об инспекторе, который выглядит и действует как обычный инспектор delphi, но позволяет мне определять свойства по коду?

И, если возможно, тот, который позволяет мне определять перечисления:

with edInspector.Items.add('align') do
Begin
  Options.add('alLeft',ftord(TMyAlign.azLeft));
  Options.add('alTop',ord(TMyAlign.azTop));
  Options.add('alRight',ord(TMyAlign.azRight));
  Options.add('alBottom',ord(TMyAlign.azBottom));
  Options.add('alClient',ord(TMyAlign.azClient));
end;

и сложные типы:

with edInspector.Items.add('font') do
Begin
  subitems.add('name',dtString).value:=def_FontName;
  subitems.add('size',dtInteger).value:=def_fontSize;
  subitems.add('color',dtColor).Value:=def_fontColor;
end;

person Jon Lennart Aasenden    schedule 25.02.2012    source источник
comment
Что вы имеете в виду под моей системой свойств, которая несколько отличается от обычной Delphi? Знаете ли вы разницу между общедоступной и опубликованной собственностью?   -  person Henrick Hellström    schedule 25.02.2012
comment
Он он, да. Я опрашиваю свойства из внешней системы, что означает, что они хранятся в парах имя / значение в настраиваемых объектах. Таким образом, они не видны из обычного RTTI, мне нужно получить / установить их вручную   -  person Jon Lennart Aasenden    schedule 25.02.2012
comment
Хорошо, если все, что отличается, - это ваш механизм сохранения, используйте опубликованные свойства, объявленные с сохраненным False, и встроенный инспектор объектов для редактирования во время разработки. Если вам нужна помощь с вашим механизмом сохранения (например, преобразование текста в значения, которые вы можете присвоить обычно типизированным свойствам), посмотрите, как TReader и TFiler справляются с этой задачей.   -  person Henrick Hellström    schedule 25.02.2012
comment
Я не могу определить их в обычном объекте delphi, потому что они не известны во время разработки, но опрашиваются с сервера во время выполнения. Это может быть любая конструкция.   -  person Jon Lennart Aasenden    schedule 25.02.2012
comment
В таком случае какое отношение инспектор RTTI имеет к вашему вопросу? Вам нужен компонент графического интерфейса, который действует как инспектор объектов IDE во время разработки, но во время выполнения?   -  person Henrick Hellström    schedule 25.02.2012
comment
Вы смотрели JVCL TjvInspector? Краткое описание и пример использования можно найти здесь, на странице NeuglsWorkStudio.   -  person LU RD    schedule 25.02.2012
comment
@ HenrickHellström: если вы посмотрите в заголовке, там написано NON-rtti   -  person Jon Lennart Aasenden    schedule 25.02.2012
comment
@JonLennartAasenden: Причина, по которой я спрашиваю, заключается в том, что мне кажется, что вы пытаетесь изобрести колесо, а именно: вы либо пытаетесь реализовать свой собственный RTTI, либо реализовать свою собственную структуру объектов доступа к данным, либо вы просто спрашиваете, как используйте TListView для редактирования.   -  person Henrick Hellström    schedule 25.02.2012
comment
Очень старая версия компонента инспектора DeveloperExpress позволяла добавлять свойства в вертикальный список, в котором были редакторы для разных типов данных. Это в основном то, что я хочу, но последний пакет devex разработан для этого и работает только с RTTI. Я не ищу решения по БД. Подумайте больше о массивах данных ajax, которые пользователь может изменять. Так что это не сложно, но я хочу выглядеть как инспектор в delphi.   -  person Jon Lennart Aasenden    schedule 25.02.2012
comment
@JonLennartAasenden, вы должны добавить свой комментарий к вопросу в качестве причины, почему   -  person Toby Allen    schedule 27.02.2012


Ответы (2)


Попробуйте Inspex. Это довольно круто.

http://www.raize.com/DevTools/Inspex/Default.asp

Вы можете добавлять свойства динамически, и вы получите редакторы свойств для большинства распространенных типов.

Он может вести себя почти так же, как инспектор объектов Delphi (он позволяет редактировать наборы, если вы добавляете несколько объектов, он определяет, какие свойства совпадают, и скрывает другие, и он делает то же самое для значений свойств).

Он показывает свойства в виде древовидной структуры, если есть несколько уровней. Вы можете легко заполнить его, добавив любой TObject, через строку или добавив свойства одно за другим.

Снимок экрана:

Снимок экрана

person Wouter van Nifterick    schedule 26.02.2012
comment
Выглядит хорошо, но не бесплатно. Я должен был сказать, что мне нужна бесплатная альтернатива. - person Jon Lennart Aasenden; 08.03.2012

С помощью Delphi Runtime Inspector вы сможете видеть информацию об объекте во время выполнения.

person menjaraz    schedule 27.02.2012
comment
Вы обязательно должны адаптировать его в соответствии со своими требованиями. - person menjaraz; 27.02.2012
comment
Мне не нужна информация о времени выполнения. Я хочу редактировать свои собственные структуры, которые я определяю кодом во время выполнения. Но я не хочу осматривать реальные объекты. - person Jon Lennart Aasenden; 08.03.2012