Конференция "Компоненты" » TShortCut как вложенное свойство
 
  • HandBrake (26.12.08 13:23) [0]
    Уважаемые мастера, помогите разобраться:

    Есть класс


     TPanelTest = class(TPanel)
     private
       FShortCut: TShortCut;
       FShortCuts: TShortCuts;
       procedure SetShortCut(const Value: TShortCut);
       procedure SetShortCuts(const Value: TShortCuts);
       { Private declarations }
     protected
       { Protected declarations }
     public
       { Public declarations }
       ...
     published
       { Published declarations }
       ...
       property ShortCut :TShortCut read FShortCut write SetShortCut;
       property ShortCuts:TShortCuts read FShortCuts write SetShortCuts;
       ...
     end;



     плюс


     TShortCuts = class( TPersistent )
     private
       FSecond: TShortCut;
       FFirst: TShortCut;
       procedure SetFirst(const Value: TShortCut);
       procedure SetSecond(const Value: TShortCut);

       ...

     published
        property First :TShortCut read FFirst write SetFirst;
        property Second:TShortCut read FSecond write SetSecond;
     end;



     когда кидаю компонент на форму:

     А. Свойство ShortCut отображается в инспекторе объектов как и в элементе MenuItem: т.е. выпадаюший список с различными комбинациями клавиш;

     Б. Свойство ShortCuts раскрывается плюсом, где против First и Second стоят нули.

    Нужно писать PropertyEditor??? Или что-то другое?:(
  • DimaBr © (26.12.08 14:24) [1]
    не нужно писать, нужно зарегистрировать для своего класса TShortCuts
  • DimaBr © (26.12.08 14:29) [2]
    RegisterPropertyEditor(TypeInfo(TShortCut), TShortCuts, '', TShortCutProperty);

  • HandBrake (26.12.08 14:43) [3]
    Да, Спасибо, только что сам дошел.
     
    RegisterPropertyEditor(TypeInfo(TShortCut),TShortCuts,'', TShortCutProperty);



    Просто не все понятно:

    Например если классу TShortCuts добавить published-свойство Font:TFont, то с ним никаких проблем в инспекторе объектов нет. Почему для property Font не надо делать RegisterPropertyEditor??? Чем провинилось свойство типа TShortCut?

    Плюс, в модуле надо Uses DesignIntf, ... , VCLEditors, а в requires пакета
    designide. Это нормально с точки зрения деплоймента(лицензирования)?
  • DimaBr © (26.12.08 15:28) [4]
    1. потому что для всойства Font (скорее всего) зарегистрированно так

    RegisterPropertyEditor(TypeInfo(TFont), nil, '', TFontProperty);


    То есть - для всех классов сразу
    2. Думаю нормально, поскольку без дизайнера смылса в редакторе свойства нет никакого
  • HandBrake (26.12.08 15:59) [5]
    To DimaBr ©
    Спасибо за помощь!
 
Конференция "Компоненты" » TShortCut как вложенное свойство
Есть новые Нет новых   [119139   +28][b:0][p:0.001]