Недокументированные возможности?! ;-)

отредактировано 07:10 Раздел: FastScript
Наткнулся на интересную фичу ;) , а именно:
Хотел добавить в скрипт простую панельку (TPanel).
Пишу:

With fsGlobalUnit do begin
AddedBy := Self;
AddClass(TPanel, 'TCustomPanel');
AddedBy := nil;
end;

Пытаюсь ее из скрипта создать:
Panel := TPanel.Create(Form);
Panel.Parent := Form;
Panel.Name := 'Panel1';
Panel.Align := alBottom;
и получаю отлуп: типа неизвестен метод CREATE! ;)
Ну, думаю, щас из public`а нужно еще конструктор описать. Потом решаю посмотреть, как в модуле fs_iformsrtti.pas описана кнопка (TButton), вижу следующее:
...
AddClass(TButton, 'TWinControl ');
...
Хм... при чем тут "TWinControl"?! Почему не "TButtonControl"?! Ведь в доке написано:
"Для добавления в скрипт класса вызовите метод TfsScript.AddClass. Первый параметр это наименование класса, второй - имя базового класса".
И ни где нет никакого описания конструктора!
Не долго думая, исправляю у себя:
...
AddClass(TPanel, 'TWinControl ');
...

и скрипт работает!!! ;)

Комментарии

  • отредактировано 07:10
    TPanel уже добавлена ;) , слелай просто из скрипта вроде
    procedure Test(Sender: TObject);
    begin
      ShowMessage(Sender.ClassName);
    end;
    
    var
      F: TForm;
      P: TPanel;
    begin
      F := TForm.Create(nil);
      try
        P := TPanel.Create(F);
        P.Parent := F;
        P.OnClick := @Test;
        F.OnClick := @Test;
        F.ShowModal;
      finally
        F.Free;
      end;
    end.
    
  • отредактировано 07:10
    Хм... у меня версия 1.4 и там вроде бы нет TPanel... хотя дело не в этом...
    Интересен сам подход в реализации... ;)

    Правда возникает вопрос, к разработчикам: не откликнется ли мне такая вольность где-нибудь в будущем?
  • отредактировано 07:10
    To Wizdom:
    Честно говоря какие-то странные проблемы с "находчивостью", хотя все мы бываем Зоркими Соколами... Почему не сделать не мудрствуя поиск в файлах *.pas в папке \Source содержащие строку, например TPanel ?
  • отредактировано 07:10
    юзайте компонент TfsExtCtrlsRTTI (там еще другие компоненты есть ;)

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.