PDA

Ver la Versión Completa : Como se utiliza un TFrame


David
02-05-2005, 18:20:01
Hola

He leido en la ayuda de delphi ,que un Tframe es un contenedor de componentes como el TForm . Pero que el TFrame se puede contener dentro de un TForm, lo que no explica es como hay que hacer para que el TFrame , se contenga dentro de un TForm.

Digo yo ,el TFrame , quedaria como un TPanel ???

Y cual es entonces la utilidad del TFrame si es como un TForm .Realmente no se la cual es la utilidad verdadera del TFrame.

roman
02-05-2005, 18:45:03
Un par de razones: claridad y reuso de código.

Un ejemplo, tienes un DBLookupComboBox para editar un campo de una tabla, por ejemplo el id del producto en una tabla de pedidos. A muchos usuarios se les facilita más escribir directamente el código del producto que seleccionarlo de una lista. La lista es útil cuando aún no se conocen los códigos pero conforme se usa la aplicación la mayoría de usuarios se los aprende.

Entonces conviene colocar, además del DBLookupComboBox, un Edit para capturar el código directamente.

Pero estos dos controles deben sincronizarse: cuando cambia el valor de uno el otro debe reflejar el nuevo valor. Esto implica que debes programar eventos para la sincronización.

Todo esto es muy sencillo. Pero ahora suponte que necesitas este par de controles en cuatro, cinco o más formularios.

¿Vas a repetir todo el código?

Mejor colocas el par de controles en un Frame. Además de que sacas código estorboso del formulario, este Frame lo puedes colocar en tantos formularios desees.

// Saludos

David
02-05-2005, 18:53:23
Vale , ya pillo la idea , voy hacer un programita con un TFrame .Pero lo que aún no sé y tampoco lo veo en la ayuda de delphi es como insertar el TFrame en un TForm determinado , lo que quiero decir es si se inserta como si fuera un TPanel , y si es así pues como se hace esto.

roman
02-05-2005, 19:18:26
Supongo que será similar a Delphi. Primero creas el frame con File|New|Frame con lo que te aparece la ventanita similar al formulario en donde colocas tus controles.

Luego escoges la componente Frames de la paleta. Al insertarla en el formulario te aparece una lista con los frames que tengas creados y escoges el que desees.

// Saludos

vtdeleon
02-05-2005, 19:35:09
Saludos.

Roma, en el caso de que tu viera 2 o 3 frame, como (por medio de codigo) llamaria a una en especifico y destruiria o ocultaria a otra?

y por los visto todos los frame se autocrean aun que lo pongas en available form

roman
02-05-2005, 20:25:20
Los frames los puedes crear y mostrar como cualquier otro control:


var
Frame: TFrame;

begin
Frame := TMiFrame.Create(Self);
Frame.Left := 16;
Frame.Top := 32;
Frame.Parent := Self;
end;


Lo destruyes con un simple

Frame.Free;

No sé de dónde concluyes que todos los frame se autocrean estando en Available Forms.

// Saludos

vtdeleon
02-05-2005, 20:36:57
Saludos.

No sé de dónde concluyes que todos los frame se autocrean estando en Available Forms.
Lo digo por el hecho de que al momento de leer este hilo, he creado un Form1 y tres Frames, cada uno de estos ultimos, con componentes diferentes. Entonces al momento de correrlos (RUN), estos aparecen desplegados en el formulario.

Como no he manejado este tipo de ventana (Frame), no se como hace que estos no aparezcan hasta que un evente X se ejecute. Intente ponerlo sen Available Form, pero para mi sorpresa :eek: ya estba ahi. Lo unico que se me ocurre es ocultarlos(mala idea, ya que se quedan en memoria) o destruirlos y despues crearlo uno a uno, dependiendo del caso.

El proposito de usar esto tipos de ventanas en para un pantalla de configuracion, parecido al que tiene el mensajer MSN Messnger.

roman
03-05-2005, 04:30:55
Piensa en un frame no como en un tipo de formulario- que no lo es- sino como un contenedor de controles. En cierta forma se asemeja más a un panel y como cualquier otro control, si lo insertas en el formulario aparecerá desde el comienzo. La ventaja del frame- a diferencia de un panel -es que durante el diseño de la aplicación puedes manejar el grupo de controles en una ventana aparte haciendo más cómoda la programación.

// Saludos

vtdeleon
03-05-2005, 04:56:38
Saludos.

Gracias Roman, ya lo tengo claro:D

DarKraZY
08-05-2005, 23:21:23
Piensa en un frame no como en un tipo de formulario- que no lo es- sino como un contenedor de controles. En cierta forma se asemeja más a un panel y como cualquier otro control, si lo insertas en el formulario aparecerá desde el comienzo. La ventaja del frame- a diferencia de un panel -es que durante el diseño de la aplicación puedes manejar el grupo de controles en una ventana aparte haciendo más cómoda la programación.

// Saludos

Y su reutilización, sin ella yo no aconsejaría ir creando frames.

El proposito de usar esto tipos de ventanas en para un pantalla de configuracion, parecido al que tiene el mensajer MSN Messnger.
En este caso te recomiendo que utlices el TPageControl con TTabSheet puedes crear varias pestañas y ocultarlas. Así consigues el mismo efecto, pero no tienes TFrames por ahí que no vas a reutilizar.

vtdeleon
09-05-2005, 00:02:28
Saludos.
...En este caso te recomiendo que utlices el TPageControl con TTabSheet puedes crear varias pestañas y ocultarlas. Así consigues el mismo efecto, pero no tienes TFrames por ahí que no vas a reutilizar.
Creo que utilizando Pagecontrol cargaria mas la memoria, ya que los componenes que contiene cada Tab o pestaña estaria cargada, asi cargando la memoria.
Con unos Tframes podria destruir cualquiera y liberar memoria y llamarla cuando quiera.

No tengo mucha experiencia:rolleyes:, pero creo que es asi.

Hasta luego:D

DarKraZY
09-05-2005, 09:04:39
Creo que utilizando Pagecontrol cargaria mas la memoria, ya que los componenes que contiene cada Tab o pestaña estaria cargada, asi cargando la memoria.
Con unos Tframes podria destruir cualquiera y liberar memoria y llamarla cuando quiera.

¿Tántos son los componentes que necesitas tener en un mismo formulario?

vtdeleon
09-05-2005, 18:55:28
Saludos.
¿Tántos son los componentes que necesitas tener en un mismo formulario? Bueno, No todos estaran en un formulario. :rolleyes: El asunto es que cada Tframe tendra una cierta cantidad de componentes (edits, botones, labels,...), y tener un pagecontrrol con varias pesta~as activas, cada uno con sus componente, a mi juicio cargarian mucho. Lo contrario que Tframe, que llamaria a cada frame dependiendo de la situacion:p .
Pero bueno, eso es asunto de criterio, estilo y objetivo de cada uno.;)