У меня есть TPageControl с несколькими таблицами TTabSheets, которые содержат TForms (или, возможно, TFrames, но пока TForms).
Когда появится вкладка, я бы хотел, чтобы TForm или TFrame были уведомлены овыйти на фронт.Я не могу найти ничего, что делает это.
Я знаю, что могу получить Active TTabSheet в событии OnChange
, поэтому я попытался добавить этот класс в TForm:
struct iTab
{
virtual void DoIt( void ) = 0;
};
с этим в OnChange
:
ICPTab *tab = dynamic_cast<ICPTab *>( sheet->Controls[ 0 ] );
Думая, я мог бы использовать RTTI, чтобы получить указатель iTab
и вызвать DoIt()
из И я получаю предупреждение:
[BCC32 Warning] Unit1.h(18): W8130 Interface 'IPTab' does not derive from IUnknown. (Interfaces should derive from IUnknown)
[BCC32 Warning] MainWindow.cpp(612): W8131 Casting Delphi style class 'TControl' to an interface. Use 'System::interface_cast<ICPTab>(cls)' instead
Меня не интересует получение всего IUnknown только для того, чтобы форма могла использовать интерфейс.
Я могу получить указатель TFrame или TForm, используя:
TForm *tab = dynamic_cast<TForm *>( sheet->Controls[ 0 ] );
, но могу 'Вызвать метод не TForm с этим указателем.Будет ли нормально вызывать метод Activate()
?
Так как мне уведомить TForm или TFrame о том, что он сейчас показывает?