Как группировать свойства компонента в инспекторе объекта

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Как группировать свойства компонента в инспекторе объекта

Сообщение qivi » 29.05.2012 15:54:30

Что то не могу разобраться как можно сгруппировать свойства "самодельного компонента вот так:
1.jpg
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Как группировать свойства компонента в инспекторе объект

Сообщение Mr.Smart » 29.05.2012 16:03:56

Создаёте класс наследник TPersistent содержащий необходимые published свойства.
Код: Выделить всё
type
  TMyProps=class(TPersistent)
  published
    property My1: ....
    property My2: ....
  end;

  TMyComp = class(Tcomponent)
  published
   ...
   property MyProps: TMyProps;
  end;
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Как группировать свойства компонента в инспекторе объект

Сообщение Ask » 30.05.2012 01:33:12

Это свойство типа "множество".
Оно автоматически показывается в виде "группы".
Ask
постоялец
 
Сообщения: 163
Зарегистрирован: 25.12.2008 03:51:37

Re: Как группировать свойства компонента в инспекторе объект

Сообщение qivi » 30.05.2012 11:00:35

Mr.Smart писал(а): TMyProps=class(TPersistent)
published
property My1: ....
property My2: ....
end;


А как быть если я хочу сгруппировать свойства для потомка TGraphicControl, и после изменения каждого из этих свойств нужно вызвать Invalidate? Хотелось бы сохранить возможность во время исполнения менять любое значение а не целиком переменную типа TMyProps.
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Как группировать свойства компонента в инспекторе объект

Сообщение Mr.Smart » 30.05.2012 12:38:55

Код: Выделить всё
type
  TMyComp = class;

  TMyProps=class(TPersistent)
  private
    fComp: TMyComp;

   procedure SetMy1(const aVal: ...);
  published
    property My1: .... write SetMy1;

  end;

  TMyComp = class(Tcomponent)
  private
   procedure Invalidate;
  published
   ...
   property MyProps: TMyProps read fMyProps write fMyProps;

  public
    constructor Create(aOwner: TComponent); override;
  end;

procedure TMyComp.SetMy1(....;
begin
  ...
  fComp.Invalidate;
  ...
end;

constructor TMyComp.Create(aOwner: TComponent);
begin
  inherited;
  fMyProps:=TMyProps.Create;
  fMyProps.fComp:=self;
end;
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 240

Рейтинг@Mail.ru
cron