2014-09-24 3 views
0

Я создаю повторно используемый файл TFrame, который содержит TcxPageControl. Идея заключается в том, что кадр опускается на форму, а затем я могу добавить страницы, специфичные для этой формы.Компоненты, добавленные в TcxTabSheet, не отображаются во время выполнения, когда TcxPageControl размещается в TFrame

Это прекрасно работает, я могу успешно добавлять страницы через конструктора, и во время выполнения появляются эти закладки. Однако проблема заключается в том, что любые компоненты, которые удаляются на TcxTabSheet, не работают.

Если я добавляю страницу на сам кадр (т. Е. Базовый кадр, а не тот, который выпадает на форму), и отбрасывайте на него компоненты, те показывают. Однако, если я отбрасываю компоненты на эту же страницу из формы, они этого не делают.

Я явно не хватает что-то здесь, но я бы подумал, что управление страница будет просто работать, как это было бы на какой-либо форме (независимо от того, это время всплыли из TFrame), но ясно, кажется, что-то это не как.

Является ли это ошибкой или я просто не делаю это правильно?

Примечание - Я использую опцию «Добавить в палитру», чтобы добавить рамку в качестве компонента, как я хочу к поверхности TPageControl свойства (упаковывают, что вопросы)

+0

Что происходит при использовании стандартного 'TPageControl'? –

+0

@LURD странно, что опция добавления нового элемента управления страницы отключена (через конструктора), поэтому я использую 'TcxPageControl'. Еще одна странность в этом сценарии: если я добавлю компонент в TcxTabSheet во время разработки, просмотрите файл DFM (Alt + 12), а затем верните его обратно, компонент больше не существует, но он все еще объявлен в форме. Когда я сохраняю, мне предлагается удалить его, поскольку для него нет декларации: S Определенно, похоже, какое-то неуверенное поведение с этим на «TFrame». – James

+0

В нашем приложении мы используем 'TcxPageControl' в' main form'. 'TcxTabSheets' создаются во время выполнения и получают назначенный потомок' TFrame'. Некоторые из этих 'TFrame' имеют' TcxPageControl' с компонентами TcxTabsheet, создаваемыми во время разработки. Эта схема работает безупречно. Я думаю, что должно быть что-то еще. Мы используем 'Delphi XE5' и' devExpress 13.2.3', если это имеет значение. –

ответ

0

Как выясняется такое поведение на самом деле ограничение VCL, а не ограничение самого компонента TcxPageControl. Разница здесь заключалась в том, что TcxPageControl позволяет добавлять страницы из экземпляра Frame, который является видом вводит в заблуждение.

Обходной путь состоит в том, чтобы просто наследовать экземпляр TFrame, который содержит TcxPageControl (или даже стандартный код TPageControl) и добавьте туда страницы. Не идеально, поскольку это означает, что я эффективно создаю отдельный TFrame на страницу, но, по крайней мере, это означает, что я могу повторно использовать общий код, который был целью.

Clarification from DevExpress.