Respondiendo al comentario de proporcionar una razón por utilizar marcos:
Me considero marcos a ser la construcción de bloques de la interfaz gráfica de usuario, con el tiempo de diseño combinación de componentes existentes con componentes más avanzados. Antes de Delphi 5, uno habría usado un descendiente TCustomPanel
con controles secundarios y lo habría registrado como el nuevo componente, listo para colocarse en un formulario. Los marcos permiten lo mismo con menos problemas.
Le permiten concentrarse en desarrollar exactamente la funcionalidad que necesita, y nada más. Si lo hace bien, puede insertarlos en hojas de control de pestañas, en diálogos modales o no, en marcos secundarios MDI y en marcos estándar. Incluso puede agregar varios de ellos en una sola forma, algo que probablemente no haría con formularios incrustados. El punto es que para una reutilización máxima a menudo es necesario un enfoque en capas, y los marcos ayudan con eso.
Un marco es apto para la incrustación desde cualquier lugar. Se debe adaptar un formulario para que no muestre una barra de subtítulos y un borde, normalmente uno anularía el CreateParams()
y ajustaría el estilo de ventana en consecuencia. Hay muchas más propiedades de formulario en el inspector que simplemente no tienen sentido para una forma incrustada. En mi humilde opinión, uno debe usar la entidad más básica y genérica que sea suficiente. Una forma simplemente es mucho más que un contenedor de control para incrustar.
OTOH No conozco ninguna desventaja de incrustar un marco que la incrustación de un formulario no tendría.
Editar:
Hay un comentario en relación con eventos como OnCreate
o OnShow
que las tramas no tienen. En realidad, consideraría esa otra ventaja de los marcos, ya que los manejadores de eventos no tienen parámetros, por lo que muchas cosas se codifican de forma rígida, necesariamente.
Consideremos el caso de configuración por usuario: en OnCreate
no hay mucha información disponible, por lo que uno siempre termina usando una constante o el nombre de la forma de la sección de archivos INI, por lo que es muy difícil o incluso imposible reutilizar la forma o para crear varias instancias de ella. Con marcos, por otro lado, un método LoadSettings
es la forma obvia de hacerlo, y puede llevar los parámetros necesarios. De esta forma, el control vuelve a donde pertenece, al contenedor del marco/forma incrustado. La reutilización solo es posible si el comportamiento se puede ajustar desde afuera.
Para objetos contenidos que no son componentes y necesitan gestión de por vida, existen, por ejemplo, AfterConstruction
y BeforeDestruction
.
Sírvanse proporcionar ** ** ninguna razón por la cual una forma incrustada sería una mejor solución que un marco. – mghie
mghie, no estoy discutiendo con usted, sin embargo, indique cualquier motivo ** ¿por qué no?;) Me encantaría saber por qué los marcos son mejores para la interfaz con pestañas de múltiples documentos. – migajek
Exactamente mi pensamiento: ¿quién elegiría formularios incrustados si pudiera usar marcos en su lugar? Los marcos son mucho menos molestos. E incluso si lo necesita como formulario más adelante, puede crear un anuncio de formulario vacío y agregar el marco con align = alClient. – dummzeuch