Недокументированные возможности?! ;-)
Наткнулся на интересную фичу , а именно:
Хотел добавить в скрипт простую панельку (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 ');
...
и скрипт работает!!!
Хотел добавить в скрипт простую панельку (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 ');
...
и скрипт работает!!!
Комментарии
Интересен сам подход в реализации...
Правда возникает вопрос, к разработчикам: не откликнется ли мне такая вольность где-нибудь в будущем?
Честно говоря какие-то странные проблемы с "находчивостью", хотя все мы бываем Зоркими Соколами... Почему не сделать не мудрствуя поиск в файлах *.pas в папке \Source содержащие строку, например TPanel ?