Pregunta

En Este artículo Hay una explicación de cómo usar TFrames como alternativa a las hojas TTAB en un pageControl Delphi.

He estado reflexionando sobre un ejercicio similar, para el que lo anterior no parece proporcionar la solución, y para la cual mi solución parece ser demasiado complicada.

El requisito es para una interfaz con pestañas, donde cada pestaña puede ser uno de varios diseños diferentes. Cada diseño se implementa como un TFRame.

Debido a la naturaleza de la aplicación que se está diseñando, es posible que tengamos múltiples copias de cualquier cuadro abierto en cualquier momento particular (con el contenido de cada pestaña que difiere, pero no el diseño) para que el usuario pueda comparar los detalles de 2/3 diferentes artículos al mismo tiempo.

Por ejemplo, en una sesión, podemos tener 3 pestañas abiertas, todo el diseño del marco A. En otra ocasión, podemos tener 3 pestañas abiertas cada un marco A, B y C.

El diseño debe ser lo suficientemente flexible como para que podamos agregar marcos al diseño a pedido.

En este momento, la solución que tengo es tener Tlists separadas que manejen cada tipo de marco que tenemos abierto, con quizás una Tlist maestra para realizar un seguimiento de las pestañas que están abiertas. Como dije, demasiado complicado.

¿Alguien tiene una sugerencia de cómo esto podría manejarse más simplemente?

¿Fue útil?

Solución

Probablemente dejaría de lado la maestría tlist de instancias de cuadro.

Si los necesita, podrá obtenerlos interrogando el tpageControl directamente o a través de cada una de sus tlists individuales para cada tipo de cuadro.

Aparte de eso, su enfoque suena razonable.

Otros consejos

Tengo una aplicación que administra los marcos en un solo panel con mi propio control de menú para controlar qué marco es visible. Cuando necesito hacer un cuadro visible visible I Simple Set Visible: = False para cada cuadro del panel, excepto el que quiero. Tengo el control de lo que va al panel, así que sé que al menos cada control es un TFRame y puedo llegar a cada cuadro iterando sobre la propiedad de controles del panel. Luego uso interfaces para comunicarme entre mi forma principal y mis marcos.

Ahora, si desea utilizar una interfaz con pestañas de Windows estándar, aún puede usar el control de la página, como ha sugerido, sabe que cada TTABSheet tiene un solo TFRame y puede verificar su tipo y trabajar con él según sea necesario. No veo por qué necesitarías una TLIST porque si realmente necesitas llegar a la "Lista de TFrames", podrías construirla de todos modos de todos modos iterar sobre las hojas TTAB en el control de la página.

Una alternativa que funcionaría de manera similar a mi primer enfoque, pero le consigue buenas pestañas de Windows, sería usar un TTABControl en lugar de un tpageControl. Con el TTABControl, básicamente, solo obtiene una instancia de tstrings (en la propiedad Tabs) que representa todas las pestañas. Dado que es un TStrings, puede asociar un objeto (es decir, su tframe) con cada elemento y, por lo tanto, cada pestaña. Cuando hace clic en una pestaña, oculta todo y muestra el TFRame correcto. También tiene su lista porque está conectado al TTABControl a través de la propiedad Tabs. Solo tienes que manejar la visibilidad de los marcos tú mismo.

Utilizamos un tpageControl y creamos tiempo de ejecución un descendiente ttabsheet, que tiene una nueva propiedad para nuestro propio tframe (no necesitamos escanear.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top