Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-04-2005
FDB FDB is offline
Miembro
 
Registrado: feb 2005
Posts: 40
Poder: 0
FDB Va por buen camino
Question mostrar y ocultar frames

Muy buenas gente!!

Os comento:

Estoy desarrollando una aplicación la cual en un mismo área deben mostrarse diversas cosas según la elegida, es decir, a la izquierda tengo un menú que carga a la derecha diferentes opciones, esto lo intento hacer mediante frames.
Creo los diferentes frames con todos sus componentes, hasta aquí todo correcto. Lo que no consigo hacer es lo siguiente:

El menú costa de varios apartados "configuración, eventos, etc..." cada frame creado anteriormente se corresponde a cada boton de este menú, es decir, tengo un frame que debe verse cuando haga clic en configuración... otro para eventos.. etc. etc. El problema está aqui, puesto que no se de que forma hacer para mostar y ocultar estos frames segun el boton pulsado.

No se si... tendré que meterlos y tener que ir ocultando y mostrando... o usar .create para cargarlo o como.

Lo unico que he conseguido hasta el momento es crear un frame en tiempo de ejecución pero claro, eso no es lo que yo quiero, porque los frames ya los tengo hechos solo quiero mostrarlos y ocultaros segun la necesidad.

Perdonen mi torpeza... y muchisimas gracias desde ya

Saludos
Responder Con Cita
  #2  
Antiguo 14-04-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Has probado la forma más natural (a mi entender) de hacerlo?

(1) Crea los Frames que ncesites.
(2) Colocalos en la paleta de componentes.
Una vez en tu formulario:
(3) Coloca todos los frames y utiliza la propiedad Visible del Frame para mostrar uno u ocultar los otros segun apartados (configuración, eventos, etc...) que estés seleccionando.

O tal vez es que no he entendido la pregunta... (tb es probable)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 14-04-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por FDB
Lo unico que he conseguido hasta el momento es crear un frame en tiempo de ejecución pero claro, eso no es lo que yo quiero, porque los frames ya los tengo hechos solo quiero mostrarlos y ocultaros segun la necesidad.
En mi opinión, un Frame no se diferencia mucho de un formulario y si con formularios normalmente se recomienda crearlos conforme se necesiten en lugar de crearlos todos al inicio, no veo por qué ha de ser distinto con los frames.

// Saludos
Responder Con Cita
  #4  
Antiguo 14-04-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por roman
...En mi opinión, un Frame no se diferencia mucho de un formulario y si con formularios normalmente se recomienda crearlos conforme se necesiten en lugar de crearlos todos al inicio, no veo por qué ha de ser distinto con los frames.
Ahí discrepo contigo Román.
Como bien dices un Frame y un Form son muy parecidos; Tal vez la diferencia (ventaja) más significativa del Frame sea que éste se puede colocar en la paleta de componentes y utilizarlo como tal. Eso implica que se pueda colocar en diseño en el form como otro componente más.
A mi entender la única ventaja (por que inconvenientes tiene unos cuantos) del Frame respecto al from es esa. ¿Pero si no la utilizamos qué ventaja tiene utilizar el Frame? O lo que es lo mismo, Si el Frame lo voy a crear en ejecución, ¿porque no crear un Form directamente y "dockarlo" (que mal suena esto) en el sitio en lugar del Frame?

No se si me expliqué bien...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 14-04-2005
FDB FDB is offline
Miembro
 
Registrado: feb 2005
Posts: 40
Poder: 0
FDB Va por buen camino
Buenas!

Muchas gracias por responder....

Usando la propiedad visible ya habia probado pero pensaba que los frames daban otra forma de poder hacerlo y de ahí era donde venia mi pregunta.

Sin mas lo haré usando la propiedad visible y ya está, supongo que entendí de forma equivocada el concepto de frame.

Cita:
... A mi entender la única ventaja (por que inconvenientes tiene unos cuantos) del Frame ...
¿Podrias comentar cuales son los inconvenientes? Pensé que para hacer lo que ya comenté al principio del hilo, es decir, sobre un mismo area mostrar diferentes componentes segun la necesidad... pues usar frames era la mejor opcion.. ¿Existe alguna otra que sea mejor para este fin?

Mil gracias de nuevo.
Responder Con Cita
  #6  
Antiguo 14-04-2005
Avatar de ruina
ruina ruina is offline
Miembro
 
Registrado: jun 2004
Posts: 196
Poder: 20
ruina Va por buen camino
Por la pequeña descripción que pones yo casi casi usaria forms, pero claro, es una cuestion filosófica mas que practica.

Desde el punto de vista práctico te recomiendo la creación dinámica en lugar del hide/show por un simple ahorro de "handles", si ves que puedes llegar a tener muchas cosas (lease memos, buttons, etc, cualquier cosa que no sea un label consume al menos un handle) creadas, aunque no estén visibles, consumen recursos.


Ahora la guerra frame/form ... según mi punto de vista (el de un ex-delphiero :/) los frames vienen a sustituir a la programación de componentes, dado que es un coñazo el recompilar y redistribuir los componentes en los distintos puestos de desarrollo. Es decir, yo usaria frames para grupos de componentes con una utilidad añadida, como por ejemplo un edit con calculadora (aunque ya esté hecho) una seria de edits con botones y validaciones ... es decir:
cosas "pequeñas" reutilizables (o con un código que queremos aislar) = Frame
cosas "grandes" = form


Aunque claro, yo ya, desafortunadamente, no uso Delphi...
__________________
todo el mundo debe creer en algo... yo creo que voy a tomarme otra copa.
Responder Con Cita
  #7  
Antiguo 14-04-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Neftali
Ahí discrepo contigo Román
Yo creo que depende de la finalidad que se persiga usando frames. Si, como dices, se usa un frame para agrupar componentes que han de colocarse en un formulario entre varios otros controles, ciertamente viene a ser como una componente más que se coloca en un formulario.

Por ejemplo, normalmente uso un frame para agrupar un Edit y un DBLookupComboBox de manera que el usuario pueda seleccionar un valor ya sea mediante el combo o escribiendo directamente su valor en el Edit.

Por otro lado, para el caso que plantea FDB, yo he hecho algo parecido colocando frames alineados al área cliente del formulario principal. Cada frame contiene todos los controles que usualmente estarían en un formulario de haber escogido la interfaz tradicional de menús.

Esta situación es esencialmente igual a la de la interfaz tradicional: un menú de opciones y "ventanas" que se muestran según la opción. Lo que cambia es la presentación visual.

Esta similitud es la que me lleva al comentario de antes- si no creamos todos los formularios de un sólo golpe, ¿por qué sí hacerlo con este tipo de frames?

Prefiero frames a formularios en este caso porque siempre hay que "truquear" y ajustar detalles para poder encajar un formulario dentro de otro y que se comporte bien.

// Saludos
Responder Con Cita
  #8  
Antiguo 14-04-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por FDB
¿Podrias comentar cuales son los inconvenientes?
¿Existe alguna otra que sea mejor para este fin?
Bueno, los problemas que yo he encontrado principalmente con los frames están relacionados con la herencia. Si ese formulario que vas a crear y que tiene Frames necesitas derivarlo para obtener un formulario B y éste B necesitas modificarlo, los frames te van a "molestar".
Sí existen otras formas, algunas ya comentadas aquí. Una la de los formularios en tiempo de ejecución, aunque como ya han dicho son más incomodos de crear y "ajustar" y otra es utilizar componentes del estilo PageControl o TNoteBook (éste si no vas a utilizar herencia, ya que si la vas a utilizar no funciona).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 14-04-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por roman
Esta situación es esencialmente igual a la de la interfaz tradicional: un menú de opciones y "ventanas" que se muestran según la opción. Lo que cambia es la presentación visual.
Esta similitud es la que me lleva al comentario de antes- si no creamos todos los formularios de un sólo golpe, ¿por qué sí hacerlo con este tipo de frames?
Es que a mi ésta situación me recuerda a un form con pestañas (PageControl) donde cada pestaña tiene n controles. Es como si cada pestaña tuviera el Frame. Por eso si creo los PageControls en diseño también crearía los Frames en diseño.

De todas formas, no todo es absoluto; Reconozco que no se me hubiera ocurrido crear un PageControl con 15 pestañas (por ejemplo) en diseño, porque no se lo que puede tardar en visualizarse. Todo depende del volumen de controles del que estemos hablando...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #10  
Antiguo 14-04-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Neftali
Bueno, los problemas que yo he encontrado principalmente con los frames están relacionados con la herencia.
Pues no sé. En la aplicación que comenté anteriormente en la que uso frames, parto de uno base que implementa el equivalente al OnShow y OnClose de un formulario y del cual heredan los demás y en otras ocasiones he usado también la herencia sin problemas.

¿Qué problemas has tenido?

// Saludos
Responder Con Cita
  #11  
Antiguo 15-04-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Bueno, cuando me refería a que van a molestar, básicamente pensaba en que si utilizas un Form y derivas puedes añadir botones a las ToolBar en los derivados (por decirte algo) en caso cuando utilizas frames (en mi caso el Frame incluía la ToolBar estandar) y una vez derivado intentar añadir botones te encuentras con la desagradable sorpresa de que no puedes (por otro lado normal, ya que son frames)... y en ese momento te acuerdas de cuando pensaste en utilizar Forms/Frames....
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #12  
Antiguo 21-04-2005
jaaron jaaron is offline
Registrado
 
Registrado: abr 2005
Ubicación: Puebla, Mexico.
Posts: 7
Poder: 0
jaaron Va por buen camino
Como Creo Dinamicamente Los Frames

yo tengo un problema algo parecido, de igual manera busco mostrar varias pantallas en mi sistema pero pues es bastante grande y para poner los frames siento que van a ser muchos, me interesaria saber como los mando crear de forma dinamica, ya lo he intentado pero parece que si se crean pero no se muestra nada y cuando los vuelvo a crear dice que el elmento ya fue creado, no se si me pudieran ayudar este es un ejemplo delcodigo que he empleado:

eso esta declarado en el proyecto .dpr:

Código Delphi [-]
  uses
 
     QForms,
     frame1 in 'frame1.pas' {Frame_prueba: TFrame},
     menu1 in 'menu1.pas' {Form1};

y el siguiente codigo es donde intento mandar llamar el frame, no son todos los parametros pero quise poner lo escencial, aqui tambien pongo en el uses el nombre del frame:

Código Delphi [-]
begin
     Frame_prueba:=TFrame_prueba.Create(Self);
    Frame_prueba.BringToFront:=true;
    Frame_prueba.Visible:=true; 
    Frame_prueba.Show;
 end;

como les comento parece que si lo crea, pero no se muestra y al pulsar de nuevo el boton dice que el componente ya esta creado, espero alguien me pueda ayudar, gracias.

por cierto ya corregi el texto gracias por el comentario jachguate

Última edición por jaaron fecha: 22-04-2005 a las 02:02:02.
Responder Con Cita
  #13  
Antiguo 21-04-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Hola Jaaron, bienvenido a los foros del clubdelphi. Te recomiendo una lectura de la guia de estilo de los foros. Alli veras que en este lugar (y en general en todo el internet) escribir en mayúsculas se interpreta como GRITAR, además de las reglas básicas de convivencia en este lugar.

Además, te invito a leer el mensaje que está al inicio de cada foro explicando el uso de la etiqueta [ delphi ] y otras creadas específicamente para publicar código, que como veras adelante, permite código perfectamente indentado además de resaltar la sintaxis.

Por otro lado supongo -pues no he programado mucho con frames- que lo que te falta es asignar el parent a tus frames:

Código Delphi [-]
Begin
  Frame_prueba:=TFrame_prueba.Create(Self);
  Frame_prueba.Parent := Self;  // no se si funcionará asi, 
  //si no poné un panel y hacé de este el parent
  Frame_prueba.Show;
end;

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #14  
Antiguo 22-04-2005
jaaron jaaron is offline
Registrado
 
Registrado: abr 2005
Ubicación: Puebla, Mexico.
Posts: 7
Poder: 0
jaaron Va por buen camino
gracias, faltaba el parent

pues creo que la linea que hacia falta era precisamente la del parent, gracias amigo jachguate, y tambien por las recomendaciones, espero yo tambien poder ayudarlos en lo que se pueda yo trabajo con proyectos CLX en delphi y kylix y conozco algunos componente para imprimir reportes que funcionan para ambos lenguajes, cualquier cosa en que les pueda ayudar, tratare de hacerlo, nuevamente gracias, y una disculpa porque lei la guia de estilo y cometi el error de mandarle un mensaje privado a neftali, perdon, no volvera a ocurrir en el futuro.

Última edición por jaaron fecha: 22-04-2005 a las 02:15:50.
Responder Con Cita
  #15  
Antiguo 02-05-2006
reevil reevil is offline
Miembro
 
Registrado: abr 2006
Posts: 179
Poder: 19
reevil Va por buen camino
varios frames

saludos...
estoy trabajando en bds 2006 para c++, se trata de una aplicacion con 5 frames cada uno con edits, dbgrid, etc. etc., el form principal tiene 5 botones, cada uno para llamar a cierto frame y ocultar los demas, me gustaria no tener que cargar mucho la aplicacion al poner todos los frames desde el inico ya chece en varios hilos de esta pagina y en otros foros pero lo mas cercano que he encontrado soluciones para delphi que no he podido implementar en c++

esto es lo que hago:
Código Delphi [-]
TFrame2 *Framex;
 Framex->Parent=Panel1;
 Framex->Show();

pero me marca un error : access violation at adress 00401ac0 .... algun tip que puedan darme?
Responder Con Cita
  #16  
Antiguo 02-05-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
No estoy puesto en C++ pero tienes que crear el frame:
Código Delphi [-]
TFrame2 *Framex = TFrame2->Create(panel1);
 Framex->Parent=Panel1;
 Framex->Show();

En este caso le pongo que el panel1 destruirá el frame. Si acaso lo liberas por código, el parámetro tendrás que cambiarlo. Create(NULL)

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #17  
Antiguo 02-05-2006
reevil reevil is offline
Miembro
 
Registrado: abr 2006
Posts: 179
Poder: 19
reevil Va por buen camino
gracias

Cita:
Empezado por Lepe
No estoy puesto en C++ pero tienes que crear el frame:
.....
gracias, en c++ no hay ->create()(hay algo parecido pero no pude hacerlo funcionar)
opte por usar tu truco de este hilo

http://www.clubdelphi.com/foros/show...ghlight=tframe

gracias de nuevo, saludos
Responder Con Cita
  #18  
Antiguo 03-05-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
y no será.....

Código Delphi [-]
  TForm1* NewForm = new TForm1(Application);
  TForm2* NewForm2 = NULL // NO LO CREAMOS.

  NewForm2 = new TForm2(Application); //ahora sip.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 03-05-2006 a las 10:04:42.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 16:48:05.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi